我有一个宏,应该查看当前工作簿中的所有工作表(不包括一些命名的工作表),如果某些单元符合某些条件,则对工作表执行操作,并将所有工作表无限循环,直到sub手动终止。
但是我收到了错误。我不确定它是否是我识别细胞或我的Ifs结构的方式。任何想法都非常感激。
Sub Update()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.name <> "B" Or ws.name <> "BO" Or ws.name <> "MS" Then
ws.Range("B9").value = ws.Range("B9").value + 1
End If
If ws.Range("D1").value = 5 Then
ws.Range("D1").value = ws.Range("D1").value + 1
Next ws
Application.OnTime Now + TimeSerial(0, 0, 1), "Update"
End Sub
答案 0 :(得分:0)
正如Kris在评论中详述的那样,布尔逻辑不准确 - 您需要将OR
替换为AND
s。
您的第二个IF
将更加整洁,End If
例程中最后一行的目的是什么?
Sub Update()
Dim ws As Excel.Worksheet
For Each ws In Excel.ThisWorkbook.Worksheets
If (ws.name <> "B") AND
(ws.name <> "BO") AND
(ws.name <> "MS") Then
ws.Range("B9").value = ws.Range("B9").value + 1
End If
If (ws.Range("D1").value = 5) Then
ws.Range("D1").value = ws.Range("D1").value + 1
End If
Next ws
Excel.Application.OnTime Now + TimeSerial(0, 0, 1), "Update"
End Sub