9

我在 Visual Basic for Applications 中遇到了 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 对象的循环底部使用此集合清理。

4

2 回答 2

30

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

Set listado = New Collection
于 2013-05-30T19:06:24.303 回答
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您希望这样做()会导致 VBAbyval默认将其传递,除非您也添加Call

这真的很令人沮丧,因为subName(args)有时您实际上可以经常使用 as 语法,但会遇到这类问题。我通常Call mySubName(args)用来使事情更清楚。

于 2013-05-30T17:55:45.050 回答