我可能只是做错了什么。
我正在尝试遍历工作簿中的每个工作表,并且在每个工作表上我希望它执行另一个循环。问题是我没有移动到下一个工作表,只在事件的工作表上工作。
任何帮助,将不胜感激。
Sub Hours()
Dim ws As Worksheet
Dim I As Integer
For Each ws In ActiveWorkbook.Worksheets
For I = 6 To 21
k = I + 1
If Cells(k, 7).Value = "" Then
ElseIf Cells(I, 8).Value <> Cells(k, 7) Then
Cells(I, 8).Font.Color = vbRed
Cells(k, 7).Font.Color = vbRed
End If
Next I
Next ws
End Sub
最佳答案
试试下面的代码,使用 With ws
获取所有对象的语句,如Cells
符合当前 Worksheet
你正在循环。
代码
Sub Hours()
Dim ws As Worksheet
Dim i As Long, k As Long
For Each ws In ActiveWorkbook.Worksheets
With ws
For i = 6 To 21
'k = i + 1 ' not needed, just change k to i + 1
' merge 2 Ifs to one using an And
If .Cells(i + 1, 7).Value <> "" And .Cells(i, 8).Value <> .Cells(i + 1, 7) Then
.Cells(i, 8).Font.Color = vbRed
.Cells(i + 1, 7).Font.Color = vbRed
End If
Next i
End With
Next ws
End Sub
关于vba - Excel VBA - 遍历电子表格并执行另一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804342/