我在VB / VBA中调用subs时使用Call关键字。我知道它是可选的,但它是更好的使用它还是离开它?我一直认为这是更明确的,但也许只是噪音。
另外,我在另一个论坛上阅读:使用Call关键字更快,因为它知道它不会返回任何值,所以它不需要设置任何堆栈空间为返回值留出空间。
啊哈。我一直想知道这一点,甚至阅读一个两英寸厚的书VBA基本上说,不要使用它,除非你想使用VBE的查找功能轻松找到大型项目中的调用。
但我只是发现另一个用途。
我们知道,可以用冒号字符连接代码行,例如:
Function Test(mode as Boolean) if mode = True then x = x + 1 : Exit Sub y = y - 1 End Sub
但是如果你在一行的开头用过程调用来做到这一点,VBE假定你是指一个标签,并删除所有的缩进,将行对齐到左边距(即使程序是按照预期调用的):
Function Test() Function1 : Function2 End Function
Function Test() Call Function1 : Call Function2 End Function
如果在上面的例子中不使用Call语句,VBE将假定“Function1”是一个标签,并在代码窗口中左对齐,即使它不会导致错误。