在添加变量后获得“预期:=”

时间:2013-11-12 21:57:16

标签: vba

我正在编写一个子来做一些事情,它在1变量上工作得很好。当我尝试添加第二个时,它会抛出一个错误,表示它正在期待=。

工作正常:

调用Sub

makeUniqueID (compare2)

创建子

Sub makeUniqueID(sheet As String)
 'does some stuff
End Sub

引发错误

调用Sub

makeUniqueID(compare2 , compare1)

创建子

Sub makeUniqueID(sheet As String, title As String)
  'Does some Stuff
End Sub

3 个答案:

答案 0 :(得分:2)

在调用Sub时删除括号:

makeUniqueID compare2, compare1

或者,正如@niallmcfc指出的那样,你可以像这样调用一个子:

Call makeUniqueID(compare2, compare1)

但是这个Call符号会增加不必要的混乱,并且已经失宠了。 Documentation on MSDN.

在调用函数时,您只需要括号,例如:

result = myFun(var1, var2)

答案 1 :(得分:1)

在调用它时尝试将“Call”放在sub前面 -

Call makeUniqueID(compare2, compare1)

答案 2 :(得分:0)

添加到@Jean的回答:

在没有Sub的情况下拨打Call并在()中包含参数实际上会改变Sub的行为

默认情况下,Parameters被称为ByRef,因此

Sub makeUniqueID(sheet As String)

相同
Sub makeUniqueID(ByRef sheet As String)

像这样调用Sub

makeUniqueID (compare2)

会覆盖引用类型,并使其成为ByVal来电。

底线是说makeUniqueID (compare2)“工作正常”并不完全正确。

只有当您打算Sub修改传递给它的源参数时,这才有意义。