在vba中什么都不做

Rik*_*Rik 3 excel vba excel-vba

在VBA中是否有等效的python"pass"在代码中什么都不做?

例如:

For Each ws In ThisWorkbook.Sheets
    If ws.Name = "Navy Reqs" Then
        ws.Select
        nReqs = get_num_rows
        Cells(1, 1).Select
        If ActiveSheet.AutoFilterMode Then Cells.AutoFilter
        Selection.AutoFilter
    ElseIf ws.Name = "temp" Then
        pass
    Else
        ws.Select
        nShips = get_num_rows
    End If
Next
Run Code Online (Sandbox Code Playgroud)

我在这里得到一个错误,没有定义pass.谢谢.

itC*_*Chi 8

只需删除pass并重新运行代码即可.VBA很乐意接受我的信念


Gar*_*ent 6

不要包含任何语句:

Sub qwerty()
    If 1 = 3 Then
    Else
        MsgBox "1 does not equal 3"
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)


Kos*_* K. 5

只需将其留空。您还可以使用 Select 语句,它更易于阅读。

For Each ws In ThisWorkbook.Sheets
    Select Case ws.Name
        Case "Navy Reqs":
            '...

        Case "temp":
            'do nothing

        Case Else:
            '...
    End Select
Next
Run Code Online (Sandbox Code Playgroud)


Mat*_*don 5

编写代码,说到做到,说到做到

For Each ws In ThisWorkbook.Sheets
    If ws.Name = "Navy Reqs" Then
        ws.Select
        nReqs = get_num_rows
        Cells(1, 1).Select
        If ActiveSheet.AutoFilterMode Then Cells.AutoFilter
        Selection.AutoFilter
    Else If ws.Name <> "temp" Then
        ws.Select
        nShips = get_num_rows
    End If
Next
Run Code Online (Sandbox Code Playgroud)

这就是你所需要的。VBA 中不存在表示“这里有一些无用的代码”的指令。

您需要说明原因的评论,而不是说明内容的评论 - 评论与'do nothing此完全相反。不要编写无操作代码,这是纯粹的噪音。

假设 Python 的pass工作方式类似于 C# 的continue语句并跳转到下一次迭代,那么 VBA 等效项是唯一合法使用的GoTo跳转:

    For ...    
        If ... Then GoTo Skip
        ...
Skip:
    Next
Run Code Online (Sandbox Code Playgroud)