我有一个全局数组,prLst()
,它可以是可变长度的。它需要数字作为字符串"1"
到Ubound(prLst)
。但是,当用户输入"0"
时,我想从列表中删除该元素。我写了下面的代码来执行此操作:如果元素是某个值,删除数组中的元素VBA
count2 = 0
eachHdr = 1
totHead = UBound(prLst)
Do
If prLst(eachHdr) = "0" Then
prLst(eachHdr).Delete
count2 = count2 + 1
End If
keepTrack = totHead - count2
'MsgBox "prLst = " & prLst(eachHdr)
eachHdr = eachHdr + 1
Loop Until eachHdr > keepTrack
这不起作用。如果元素是"0"
,如何有效地删除数组prLst
中的元素?
注:这是一个更大的程序,对此的描述可以在这里找到的一部分:Sorting Groups of Rows Excel VBA Macro
对于集合,集合的长度是否必须指定或“ReDimmed”?另外,您是否可以通过元素逐个元素循环,按特定顺序排列元素?另外,你是否必须循环删除,或者有没有办法说“所有这些都是'这个',删除!” ? – H3lue
不,收集的长度不必由您(用户)“重做”。这使得集合比需要添加和删除项目的任务的数组方便得多。请参阅[文档](http://msdn.microsoft.com/en-US/library/yb7y698k%28v=VS.80%29.aspx)。 –
很多问题:)无需redim。是的,你可以遍历它们,并在其他元素之前或之后插入元素。元素可以通过它们的索引号(如数组中的索引)或按键的名称来访问。进一步查看http://msdn.microsoft.com/en-us/library/aa164019(v=office.10).aspx#odc_tentipsvba_topic4和http://msdn.microsoft.com/en-us/library/a1y8b3b3( v = vs.80).aspx – Eddy