Ich schreibe gerade ein einfaches Makro, um zu bestimmen, wer in welchem Zeitfenster geplant ist, und dieses Zeitfenster auf einem anderen Blatt aufzuzeichnen. Alles funktioniert gut, bis der Name der Person, die sich auf dem letzten Zeitfenster befindet, mit dem letzten Zeitfenster verglichen wird. An diesem Punkt geht die for-Schleife "j" auf -1 und bewirkt, dass das Makro ausläuft.Einfache verschachtelte For-Loops, die mit 1004 Fehler ausstoßen
Ich habe meinen gesamten Code unten enthalten, aber das ist die Linie, die die Punkte Debugger watchStation = ActiveSheet.Cells (j, k) .Value
Dim mySheet As Worksheet, masterSheet As Worksheet, myBook As Workbook 'Define your workbooks and worksheets as variables
Option Compare Text 'Makes string comparisons case IN-sensitive
Sub Watch_Bill()
Set myBook = Excel.ActiveWorkbook
Set masterSheet = Sheets("Musters")
MsgBox masterSheet.Name
Dim memberName, memberFirstWatch, memberSecondWatch As String
Dim lastRow As Integer
Dim watchStation, watch As String
lastRow = masterSheet.Range("A1").CurrentRegion.Rows.Count
'lastColumn = ActiveSheet.Range("A1").CurrentRegion.Columns.Count
'Cycle through each member of the duty section
For i = 2 To lastRow
memberName = masterSheet.Cells(i, 2).Value
'Cycle through watch bill to find member's watches
For j = 9 To 18 'Row 9 starts the section of the watchbill that contains watches
'MsgBox j
For k = 2 To 9 'Column 2 through 9 contain watches
watchStation = ActiveSheet.Cells(j, k).Value
'MsgBox watchStation
If InStr(watchStation, memberName) <> 0 Then
'Determine what watch station member is on
If j = 9 Or j = 10 Then
watch = "0700-1200"
ElseIf j = 11 Or j = 12 Then
watch = "1200-1700"
ElseIf j = 13 Or j = 14 Then
watch = "1700-2200"
ElseIf j = 15 Or j = 16 Then
watch = "2200-0200"
Else: j = 17 Or j = 18
watch = "0200-0700"
End If
'MsgBox "Found member"
'Check if member already had watch
If memberFirstWatch = "" Then
'MsgBox "member's first watch"
memberFirstWatch = watch
Else
'MsgBox "member's second watch"
memberSecondWatch = watch
End If
'Fill in member's watch times on muster sheet
masterSheet.Cells(i, 11).Value = memberFirstWatch
masterSheet.Cells(i, 12).Value = memberSecondWatch
End If
Next k
Next j
memberFirstWatch = ""
memberSecondWatch = ""
Next i
End Sub
Vielen Dank für jede Hilfe jedermann sind zur Verfügung stellen kann. Das macht mich verrückt und ich habe es seit Stunden nicht mehr herausgefunden.
Ich denke, Sie müssen die Else am Ende zu einem anderen ElseIf ändern. Wie es jetzt ist, setzen Sie j auf True (17 ODER j = 18). –