我在Excel中的类模块中创建了一个自定义集合类。我想把一个函数用一些自定义对象填充集合,所以我可以一次传递一个或多个对象。
我创建的功能是:
Public Sub Add( Object1 As customClass, _
Optional Object2 As customClass, _
Optional Object3 As customClass, _
Optional Object4 As customClass, _
Optional Object5 As customClass)
问题是我不知道如何检测传递给函数的args数量...... 我该如何检测它们?
另一方面,我尝试这样的事情:
Dim i as integer
for i = 1 to 5
If Not IsMissing("Object" & i) then MyCollection.Add "Object" & i
Next i
...明显购买它不起作用。
我怎样才能以优雅和简单的方式做到这一点?
答案 0 :(得分:3)
If Object2 Is Nothing Then
Debug.Print "obj2 is nothing"
Else
MyCollection.Add Object2
End If
不那么漂亮的方式,但代码更少
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
您还可以使用自定义集合