回答
您可以使用Erase
或ReDim
語句來清除數組:
Dim threeDimArray(9, 9, 9), twoDimArray(9, 9) As Integer
Erase threeDimArray, twoDimArray
ReDim threeDimArray(4, 4, 9)
See the different usage of each method here.
更新
要刪除的集合,你迭代的項目,使用remove
方法:
For i = 1 to MyCollection.Count
MyCollection.Remove 1 ' Remove first item
Next i
要在VBA中刪除動態數組,請使用指令Erase
。
例子:
Dim ArrayDin() As Integer
ReDim ArrayDin(10) 'Dynamic allocation
Erase ArrayDin 'Erasing the Array
希望這有助於!
問題提出後兩年發佈答案的原因是什麼,前提是這個答案已經發布了? – GSerg 2012-03-22 15:04:35
@GSerg這是一個非常好的句子。 – 2012-03-22 16:33:21
對你們倆都是無價的評論。沒有答案顯示擦除。此外,Andres公佈了他的答案差不多一年之後,它實際上給了我一直在尋找的單線代碼解決方案。如果我可以對你的兩個評論下決心,我會的。 – oscilatingcretin 2013-02-13 13:51:01
我陷入其中清除整個陣列失敗,暗淡/ REDIM的情況:具有
2模塊寬的陣列,私人用戶窗體內部,
一個數組是動態的,使用一個類模塊,另一個是固定的,並且有一個特殊的類型。
Option Explicit
Private Type Perso_Type
Nom As String
PV As Single 'Long 'max 1
Mana As Single 'Long
Classe1 As String
XP1 As Single
Classe2 As String
XP2 As Single
Classe3 As String
XP3 As Single
Classe4 As String
XP4 As Single
Buff(1 To 10) As IPicture 'Disp
BuffType(1 To 10) As String
Dances(1 To 10) As IPicture 'Disp
DancesType(1 To 10) As String
End Type
Private Data_Perso(1 To 9, 1 To 8) As Perso_Type
Dim ImgArray() As New ClsImage 'ClsImage is a Class module
,我必須聲明爲public,以清除這些陣列子(和相關運行時創建的控件),從內部和用戶窗體像這樣外:
Public Sub EraseControlsCreatedAtRunTime()
Dim i As Long
On Error Resume Next
With Me.Controls 'removing all on run-time created controls of the Userform :
For i = .Count - 1 To 0 Step -1
.Remove i
Next i
End With
Err.Clear: On Error GoTo 0
Erase ImgArray, Data_Perso
'ReDim ImgArray() As ClsImage ' i tried this, no error but wouldn't work correctly
'ReDim Data_Perso(1 To 9, 1 To 8) As Perso_Type 'without the erase not working, with erase this line is not needed.
End Sub
注:這最後一個子是首先從外部(其它形式和類模塊)調用Call FormName.SubName
但與Application.Run FormName.SubName
,錯誤更少,代替它不要問爲什麼......
[your Array name] = Empty
則數組將沒有內容並且可以再次填充。
這不起作用。您會收到「編譯錯誤:無法分配給數組」 – seadoggie01 2017-11-20 15:21:34
僅使用Redim
聲明
Dim aFirstArray() As Variant
Redim aFirstArray(nRows,nColumns)
找到更好的利用我自己: 我平時測試,如果一個變種是空的,所有上述方法失敗的考驗。我發現,實際上你可以設置一個變型爲空:
Dim aTable As Variant
If IsEmpty(aTable) Then
'This is true
End If
ReDim aTable(2)
If IsEmpty(aTable) Then
'This is False
End If
ReDim aTable(2)
aTable = Empty
If IsEmpty(aTable) Then
'This is true
End If
ReDim aTable(2)
Erase aTable
If IsEmpty(aTable) Then
'This is False
End If
這樣我得到的行爲我想
- 1. 陣列被清除
- 2. 刪除整個陣列
- 3. 如何清除角度陣列
- 4. 清除PHP餅乾陣列
- 5. 如何用Tkinter清除整個Treeview
- 6. 我將如何清除整個數組?
- 7. 整個陣列
- 8. 卸下最後一項陣列,刪除整個陣列
- 9. 如何清除oracle中的單個列?
- 10. Elasticsearch突出顯示陣列,如何返回整個陣列
- 11. 刪除陣列中的[0]元素,而不刪除整個陣列
- 12. 帶過濾器陣列中刪除對象將刪除整個陣列
- 13. 如何清除NiFi隊列?
- 14. 排列整個2D陣列
- 15. 在Redux中清除陣列狀態
- 16. 對象陣列不會清除
- 17. 未設置未清除陣列鍵/值
- 18. 淘汰賽清除和克隆陣列
- 19. 清理陣列
- 20. 如何從多個陣列中刪除?
- 21. 如何刪除這個 「0」:{從陣列
- 22. 如何在C++中清除()整數
- 23. 如何在反應0.14 ES6上點擊清除狀態或清空陣列?
- 24. 清除訪問中的整列
- 25. Python - 如何完全清除列表中的整數?
- 26. 如何刪除陣列
- 27. 如何刪除陣列
- 28. 如何刪除陣列
- 29. 如何清除這個setInterval?
- 30. 如何清除一個JList
怎麼樣的集合? – 2010-06-10 21:10:21
@I:請看我更新的答案。 – Sarfraz 2010-06-10 21:13:12
只是簡單的說明,至少對於VBA來說,你不能ReDim用維度聲明的數組。 – KevenDenen 2010-06-11 03:49:16