我正在编写一个子来做一些事情,它在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
答案 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
修改传递给它的源参数时,这才有意义。