Excel VBA。 如何传递对象作为可选的参数,并能够检测到它们?

我在Excel的类模块中创build了一个自定义集合类。 我想放一个函数来填充一些自定义对象的集合,所以我可以同时传递一个或多个对象。

我创build的function是:

Public Sub Add( Object1 As customClass, _ Optional Object2 As customClass, _ Optional Object3 As customClass, _ Optional Object4 As customClass, _ Optional Object5 As customClass) 

问题是我不知道如何检测有多lessparameter passing给函数…我如何检测它们?

另一方面,我正在尝试这样的事情:

 Dim i as integer for i = 1 to 5 If Not IsMissing("Object" & i) then MyCollection.Add "Object" & i Next i 

…买显然这是行不通的。

我怎样才能以优雅和简单的方式做到这一点?

 If Object2 Is Nothing Then Debug.Print "obj2 is nothing" Else MyCollection.Add Object2 End If 

不太漂亮的方式,但更less的代码是

 If Not Object2 Is Nothing then MyCollection.Add Object2 End if 

 Public Sub AddExtended(ParamArray arr()) Dim item Debug.Print "the count: " & UBound(arr) + 1 For Each item In arr If TypeOf item Is customClass Then Debug.Print "type of item is customClass" 'MyCollection.Add item End If Next End Sub 

举个例子来说吧

 Dim o1 As New customClass Dim o2 As New customClass Call AddExtended(o1, o2, o2) 'AddExtended o1, o2, o2 

您也可以使用自定义集合

看到这个和这个