在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
我在这里得到一个错误,没有定义传递。谢谢。
9条答案
按热度按时间ffx8fchx1#
只要删除
pass
并重新运行代码。VBA将很乐意接受,我相信omhiaaxx2#
不包含任何声明:
yhived7q3#
你也可以使用Select语句,这样更容易阅读。
p3rjfoxz4#
编写代码,做到它所说的 *,并说它所做的 *。
这就是你所需要的。在VBA中不存在一个意思是“这里有一些无用的代码”的指令。
你想要的注解应该是 why,而不是 what --如果注解是
'do nothing
,那就完全相反了。不要写无操作代码,那纯粹是噪音。假设Python的
pass
像C#的continue
语句一样工作,并且跳到下一个迭代,那么VBA等价物是GoTo
跳转的唯一合法使用:iq0todco5#
这段代码显示了一个IF测试,它会一直搜索,除非得到匹配。
zsohkypk6#
我用COBOL编程很多年了,等价的“什么都不做”语句是
NEXT SENTENCE
。在VBA中,我发现自己创建了一个虚拟变量(有时是全局变量)
dim dummy as integer
,然后当我需要在If..Then..Else
中执行“什么都不做”操作时,我会放入一行代码:dummy = 0
.cs7cruho7#
这实际上是一个合法的问题。我想运行一个调试例程,当某个临界值为8时停止,即在x = 8处设置断点,然后逐行执行。因此以下结构很有用:
显然,这里的任何东西都可以,例如
x=x
,但最好有一些正式的东西,如pass
。但我一直在使用
x=x
。njthzxwz8#
大多数语言都有一个“null”或“empty”语句,比如Python的
pass
。这些语句的发展是因为它们实际上很有用,在某些语法中是必要的。例如,正如其他人所建议的,null语句可以作为调试器的无副作用锚。我用途:
请注意,如果您的用例是设置条件断点,您可能会发现
Stop
更有用,如:bwleehnv9#
我使用“DoEvents”作为没有操作行的地方,我可能需要一个断点进行VBA调试。它有一个额外的好处,总是停止键盘上的“Esc”键或VBA编辑器中的暂停按钮。