清空 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
【讨论】:
谢谢,我意识到还有 Setlistado = 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 集合的主要内容,如果未能解决你的问题,请参考以下文章
关于取消/清空ECharts地图区域选中状态的问题 我有几句话说