使VBA集合变空

Ant*_* E. 9 collections vba arguments list

我在Visual Basic for Aplications中有一个Collection对象的问题(我用它与Excel一起使用)

我有这个代码试图清空我必须重用的Collection对象:

Sub limpieza(ByRef listilla As Collection)

    While listilla.Count <> 0
        listilla.Remove (listilla.Count)
    Wend

End Sub
Run Code Online (Sandbox Code Playgroud)

但当我打电话给:

Dim listado As New Collection
<I have some code here that add some values to the collection>
limpieza (listado)
Run Code Online (Sandbox Code Playgroud)

VBA对我说

参数不是可选的

并且代码不会运行.

我能做什么?我需要在循环的底部使用此集合清理,该循环重用Collection对象.

Dic*_*ika 30

如果要清空集合,而不是调用单独的过程,只需使用

Set listado = New Collection
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我意识到还有Set`listado = Nothing`我可以做同样的事情.我继续对恩德兰的回答,因为它解决了我的更多程序问题.再见. (2认同)

end*_*and 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)
Run Code Online (Sandbox Code Playgroud)

请注意,我删除()了参数.

传递时byref你想要这样做()是因为byval默认情况下VBA会传递它,除非你添加Call它.

这可能非常令人沮丧,因为subName(args)有时你经常会使用as语法,但会遇到这些问题.我一般Call mySubName(args)用来使事情更清楚.