私は現在、どのタイムスロットでスケジュールされているかを決定し、そのタイムスロットを別のシートに記録する簡単なマクロを作成しています。最後のタイムスロットにいる人の名前が最後のタイムスロットと比較されるまで、すべてがうまく動作します。この時点で、forループ "j"は-1になり、マクロはエラーになります。単純な入れ子ループfor 1004 error
私は以下の私の全体のコードが含まれているが、これは 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
感謝。これは私をナットに押しつけているので、今何時間もそれを把握することはできませんでした。
私は最後にElseを別のElseIfに変更する必要があると思います。今のようにjをTrueに設定しています(17 OR j = 18)。 –