使VBA集合变空

时间:2013-05-30 17:46:54

标签: vba list collections arguments

我在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对象。

2 个答案:

答案 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)来使事情变得更清楚。