gpt4 book ai didi

vba - 从集合中删除当前循环的项目?

转载 作者:行者123 更新时间:2023-12-02 09:28:59 24 4
gpt4 key购买 nike

如何从集合中删除当前循环的项目?我收到运行时错误 13: wls.Remove vl 行上的类型不匹配

Sub FocusOnH(ByRef vls As Collection)
Dim vl As CVegetableLine
For Each vl In vls
If vl.hValue <> 0 Then
vl.volume = vl.hValue
Else
vls.Remove vl
End If
Next vl
End Sub

最佳答案

在按向后顺序循环遍历集合时必须删除项目,否则会导致错误。

Sub TestRemoveItemInCollection()
Dim col As Collection, i As Integer
Set col = New Collection
col.Add "item1"
col.Add "item2"
col.Add "item3"
col.Add "item4"

' Never use: For i=1 to col.Count
For i = col.Count To 1 Step -1
col.Remove i
Next i

Set col = Nothing
End Sub
为什么?因为 Visual Basic 集合会自动重新索引。如果您尝试按正向顺序删除,它将与外循环发生冲突,从而出现棘手的错误。

另一个示例,可以像这样删除集合中的所有项目:

For i = 1 to col.Count
col.Remove 1 'Always remove the first item.
Next i

关于vba - 从集合中删除当前循环的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23511563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com