我有一個全局數組,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