Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA函数-参数不是可选的_Excel_Vba - Fatal编程技术网

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