清空 VBA 集合

Posted

技术标签:

【中文标题】清空 VBA 集合【英文标题】:Making empty a VBA collection 【发布时间】:2013-05-26 10:00:38 【问题描述】:

我在 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 对象的循环底部使用此集合清理。

【问题讨论】:

【参考方案1】:

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

Set listado = New Collection

【讨论】:

谢谢,我意识到还有 Set listado = Nothing 我可以做同样的事情。我保留对 enderlands 答案的投票,因为它解决了我更多的程序问题。再见。【参考方案2】:
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 文档并不是一个非常有用的信息来源。我对这种语言有点菜鸟

以上是关于清空 VBA 集合的主要内容,如果未能解决你的问题,请参考以下文章

vba——清空整张表用于初始化

关于取消/清空ECharts地图区域选中状态的问题 我有几句话说

java中如何将list集合清空

如何实现VBA 判断单元格内数据是不是为整数,是则无影响,否则出现消息框,单元格清空?

mongodb 怎样清空collection

python 集合清空