清空VBA集合

9

我在使用Visual Basic for Applications(与Excel一起使用)的Collection对象时遇到了问题。

我有一个需要重复使用的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告诉我说,参数是必需的,并且代码无法运行。我该怎么办?我需要在重复使用集合对象的循环的底部使用集合清理。
2个回答

30

如果你想清空一个集合,不需要调用单独的过程,只需使用

Set listado = New Collection

2
谢谢,我意识到也可以使用Set listado = Nothing来实现同样的效果。我会保留对enderlands答案的支持,因为它解决了更多的程序问题。再见。 - Antonio E.

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)来使事情更清晰。

谢谢你解决了我在子程序方面遇到的许多问题,MSDN文档不是一个非常有用的信息来源。我对这种语言还有些新手。 - Antonio E.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接