VBA数组 Erase 清除数组

Erase清除数组。针对固定数组与动态数组,清除的含义不同。


1)固定数组的清除

针对固定数组,清除表示 不会释放空间,但会修改所有元素的值,变为“空”:数值数组元素会变为0;字符串数组元素会变为"";等等。

示例代码:

Sub array10()
  '声明固定数组
  Dim arr1(3) As Integer

  arr1(0) = 100
  arr1(1) = 200
  arr1(2) = 300
  arr1(3) = 400

  '清除固定数组
  Erase arr1

  Debug.Print "isEmpty(arr1):" & IsEmpty(arr1) '结果为False
  Debug.Print "TypeName(arr1):" & TypeName(arr1) '结果为Integer(),表示整数数组

  For Each item1 In arr1
    Debug.Print item1
  Next

End Sub

输出结果

isEmpty(arr1):False
TypeName(arr1):Integer()
 0 
 0 
 0 
 0

2)动态数组的清除

针对动态数组,清除表示完全释放数组的内存空间。

示例代码:

Sub array11()

  '声明动态数组
  ReDim arr1(3) As Integer

  arr1(0) = 100
  arr1(1) = 200
  arr1(2) = 300
  arr1(3) = 400

  '清除动态数组
  Erase arr1

  Debug.Print "isEmpty(arr3):" & IsEmpty(arr3) '结果为True
  Debug.Print "TypeName(arr3):" & TypeName(arr3) '结果为Empty

  'For循环会报错,因为数组现在为Empty。
  'For Each item1 In arr1
  '  Debug.Print item1
  'Next

End Sub

输出结果

isEmpty(arr3):True
TypeName(arr3):Empty