📅  最后修改于: 2023-12-03 14:41:03.105000             🧑  作者: Mango
在 Excel VBA 编程中,数组是一种重要的数据结构,它可以在内存中保存一系列值,并且可以随时添加或删除其中的元素。在实际的项目开发中,我们有时需要在数组中删除特定元素。本文将介绍如何使用 VBA 删除 Excel 中的数组元素。
在 VB 中,可以使用 ReDim
语句来重新定义数组的大小。通过将数组的大小减小一个单位,就可以删除最后一个元素。以下代码演示了如何删除数组 myArray
中的最后一个元素:
ReDim Preserve myArray(UBound(myArray) - 1)
这里使用 Preserve
保留数组中已有的元素,只修改数组的大小。需要注意的是,如果数组中只有一个元素,则不能再次删除元素,否则会引发“下标越界”错误。
如果要删除数组中的第一个元素,可以使用 For...Next
循环,将数组中的每个元素复制到一个新数组中,但跳过第一个元素。以下代码演示了如何删除数组 myArray
中的第一个元素:
Dim newArray() As Variant
ReDim newArray(LBound(myArray) To UBound(myArray) - 1)
For i = 1 To UBound(myArray)
newArray(i - 1) = myArray(i)
Next i
myArray = newArray
这里要注意的是,新数组的下标比 myArray
的下标小一,需要在复制元素时减一。同时,也可以使用 Array
函数创建新数组,如下所示:
myArray = Array(myArray(LBound(myArray) + 1) To myArray(UBound(myArray)))
这里用 Array
函数将数组中除第一个元素外的所有元素重新放置到一个新数组中。
如果要删除数组中的多个连续元素,可以使用 For...Next
循环,将这些元素的后面的元素向前移动。以下代码演示了如何删除数组 myArray
中的一段连续的元素:
' 删除从第2个到第4个元素
For i = 2 To UBound(myArray) - 2
myArray(i) = myArray(i + 3)
Next i
ReDim Preserve myArray(UBound(myArray) - 3)
这里用循环将第 5 个到最后一个元素向前移动 3 个位置,然后重新定义数组的大小,以删除最后三个元素。需要注意的是,如果要删除的元素数量超过数组的大小,就会引发“下标越界”错误。
如果要删除的元素不连续,则需要将它们从头到尾依次删除。以下代码演示了如何删除数组 myArray
中的若干个不连续的元素:
Dim newArray() As Variant
ReDim newArray(LBound(myArray) To UBound(myArray))
For i = LBound(myArray) To UBound(myArray)
If i <> 2 And i <> 4 And i <> 5 Then
newArray(j) = myArray(i)
j = j + 1
End If
Next i
ReDim Preserve newArray(j - 1)
myArray = newArray
这里使用一个新数组 newArray
来保存要保留的元素。循环遍历原数组 myArray
的所有元素,只将不需要删除的元素复制到新数组中。需要注意的是,新数组的下标要从 0 开始,需要在复制元素时自增。最后重新定义数组的大小,以删除多余的元素。