使用多个IF循环遍历表格的宏

时间:2016-03-10 22:16:40

标签: excel vba excel-vba

我有一个宏,应该查看当前工作簿中的所有工作表(不包括一些命名的工作表),如果某些单元符合某些条件,则对工作表执行操作,并将所有工作表无限循环,直到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

1 个答案:

答案 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