如何清除整个阵列?

l--*_*''' 55 arrays excel vba

我有这样一个数组:

Dim aFirstArray() As Variant
Run Code Online (Sandbox Code Playgroud)

如何清除整个阵列?收藏怎么样?

Sar*_*raz 108

您可以使用Eraseor ReDim语句清除数组:

Dim threeDimArray(9, 9, 9), twoDimArray(9, 9) As Integer
Erase threeDimArray, twoDimArray
ReDim threeDimArray(4, 4, 9)
Run Code Online (Sandbox Code Playgroud)

请在此处查看每种方法的不同用法.

更新

要删除集合,请迭代其项目并使用以下remove方法:

For i = 1 to MyCollection.Count
  MyCollection.Remove 1 ' Remove first item
Next i
Run Code Online (Sandbox Code Playgroud)

  • +1 @KevenDenen这是真的,但原始问题中的数组没有用维度声明.@Sarfraz很好的答案,但你的链接是为VB.Net.我找不到VBA的链接.这是VB6手册的链接http://msdn.microsoft.com/en-us/library/aa243360(v=VS.60).aspx (2认同)
  • 如果我简单地叫`ReDim`怎么办?它只是将值重置为零还是分配一阵子的新数组?我担心的是调用ReDim重置循环中的大数组时的时间性能 (2认同)
  • 这一切都不适用于测试“IsEmpty(aFirstArray)”。我为此添加了一个答案 (2认同)

小智 22

要在VBA中删除动态数组,请使用该指令Erase.

例:

Dim ArrayDin() As Integer    
ReDim ArrayDin(10)    'Dynamic allocation 
Erase ArrayDin        'Erasing the Array   
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!

  • 对你们两个人毫无意义的评论.没有答案证明擦除.此外,在Andres发布他的答案差不多一年之后,它实际上给了我一直在寻找的单行代码解决方案.如果我可以对你的两个评论进行投票,我会的. (10认同)
  • 在提出问题两年后发布答案的原因是什么,只要这个答案已经发布了? (4认同)
  • 添加的评论对我们这些以后查看它们的人很有用 - 例如我在 2018 年 12 月使用这个答案。感谢 Andres 抽出时间发帖。 (2认同)

Jaa*_*nus 6

它很简单:

Erase aFirstArray
Run Code Online (Sandbox Code Playgroud)