0

我正在编写一个 sub 来做一些事情,它与 1 个变量一起工作得很好。当我尝试添加第二个时,它会抛出一个错误,说它需要一个 =。

工作正常:

呼叫子

makeUniqueID (compare2)

创建子

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

引发错误

呼叫子

makeUniqueID(compare2 , compare1)

创建子

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

3 回答 3

2

调用 Sub 时去掉括号:

makeUniqueID compare2, compare1

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

Call makeUniqueID(compare2, compare1)

但是这种Call表示法增加了不必要的混乱并且已经失宠。MSDN 上的文档。

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

result = myFun(var1, var2)
于 2013-11-13T08:31:43.607 回答
1

尝试在呼叫时将“呼叫”放在子前面-

Call makeUniqueID(compare2, compare1)
于 2013-11-12T22:03:17.680 回答
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修改传递给它的源参数时才重要。

于 2013-11-13T08:59:56.920 回答