我在Visual Basic for Aplications中使用Collection对象时出现问题(我将它与Excel一起使用)
我有这段代码试图清空我必须重复使用的Collection对象:
Sub limpieza(ByRef listilla As Collection)
While listilla.Count <> 0
listilla.Remove (listilla.Count)
Wend
End Sub
但是当我用它打电话时:
Dim listado As New Collection
<I have some code here that add some values to the collection>
limpieza (listado)
VBA对我说
参数不是可选的
并且代码无法运行。
我该怎么办?我需要在循环底部使用此集合清理,该循环重用Collection对象。
答案 0 :(得分:30)
如果要清空集合,而不是调用单独的过程,只需使用
Set listado = New Collection
答案 1 :(得分:11)
Dim listado As New Collection
<I have some code here that add some values to the collection>
limpieza listado
'this syntax also works
Call limpieza(listado)
请注意,我删除了参数周围的()
。
在byref
传递()
时,默认情况下会导致VBA将其作为byval
传递,除非您同时添加Call
。
这可能非常令人沮丧,因为有时您经常会使用subName(args)
作为语法,但会遇到这些问题。我通常使用Call mySubName(args)
来使事情变得更清楚。