VBA Function - Argument Not Optional VBA Function - Argument Not Optional vba vba

VBA Function - Argument Not Optional


Anytime you assign an object you need to use the set keyword.

set RETURN_Equipment = myCollection


I was getting this error because I was using the wrong function name when trying to return a result from a function. I was doing this:

Function MyFuncA(arg as String)    MyFuncB = arg 'The problem is I'm using MyFuncB instead of MyFuncAEnd Function

This happened because I copied a function from somewhere else and changed the name, but not the return statement. This is not the OP's problem, but I was getting the same error message.


Because you've specified the Optional Parameter as a string it will default to an empty string if you've not specified a value.

This means it can't be missing

If you'd specified it as

Public Function RETURN_Equipment(Optional category) As Collection

It would be a variant and that could be missing, although you'd also be able to mess things up by passing non string variants as the category parameter

The best course of action is probably to replace

If IsMissing(category) Then 

with

If category = "" Then 

And as Brad has pointed out you'll need to use Set

Set RETURN_Equipment = myCollection

For full details check thishttp://msdn.microsoft.com/en-us/library/office/gg251721%28v=office.15%29.aspx