Excel VBA函数-参数不是可选的
我理解错误消息,它告诉我我没有填写参数。但是我只有一个参数,我已经声明它是可选的。代码似乎认为我在尝试从函数调用函数Excel VBA函数-参数不是可选的,excel,vba,Excel,Vba,我理解错误消息,它告诉我我没有填写参数。但是我只有一个参数,我已经声明它是可选的。代码似乎认为我在尝试从函数调用函数 给出了什么?每当您指定一个对象时,您都需要使用set关键字 set RETURN\u device=myCollection因为您已将可选参数指定为字符串,如果未指定值,它将默认为空字符串 这意味着它不可能丢失 如果你把它指定为 RETURN_Equipment = myCollection 它可能是一个变量,可能会丢失,但您也可以通过将非字符串变量传递为category参数来
给出了什么?每当您指定一个对象时,您都需要使用
set
关键字
set RETURN\u device=myCollection
因为您已将可选参数指定为字符串,如果未指定值,它将默认为空字符串
这意味着它不可能丢失
如果你把它指定为
RETURN_Equipment = myCollection
它可能是一个变量,可能会丢失,但您也可以通过将非字符串变量传递为category参数来搞乱事情
最好的办法可能是更换
Public Function RETURN_Equipment(Optional category) As Collection
与
正如Brad指出的,你需要使用Set
If category = "" Then
有关详细信息,请查看此
我遇到此错误,因为我在尝试从函数返回结果时使用了错误的函数名。我是这样做的:
Set RETURN_Equipment = myCollection
这是因为我从其他地方复制了一个函数并更改了名称,但没有更改return语句。这不是OP的问题,但我收到了相同的错误消息。集合的默认“值”可能重复的是
。Item
需要索引。要将集合对象的引用分配给变量,您需要在行首使用Set
关键字。非常有效,谢谢!既然您已经指出了这一点,它完全有道理。我确实注意到IsMissing()没有启动,但我没有检查它,因为我的赋值错误把一切都搞糟了。谢谢你给我的小费,你今天帮了我不少忙。当做
If category = "" Then
Set RETURN_Equipment = myCollection
Function MyFuncA(arg as String)
MyFuncB = arg 'The problem is I'm using MyFuncB instead of MyFuncA
End Function