从特定索引处的数组中删除项目

时间:2021-01-15 04:56:43

标签: excel vba

我有一个数字数组,一旦我“使用”了一个我想使用我为该值存储的特定索引删除的数字。

我知道没有直接的方法,但有没有办法解决这个问题?

示例:

ShiftArray(1,25,12)

Pos = 1

Shiftarray(pos).delete

数组应该是 = ShiftArray(1,12)

(我知道这样的方法不存在,只是为了清楚起见)

我尝试了以下操作,但出现错误:

ShiftHeadsArray(pos - 1) = " "
StringUse = Application.WorksheetFunction.Trim(Join(ShiftHeadsArray, " "))
ShiftHeadsArray = Split(StringUse, " ")

其中 pos 是我要删除的数字在数组中的位置。

1 个答案:

答案 0 :(得分:1)

试试这个代码

Sub Test()
    Dim arr
    arr = Array(1, 25, 12)
    DeleteItem arr, 1
    Debug.Print Join(arr, ", ")
End Sub

Sub DeleteItem(ByRef arr, v)
    Dim a(), i As Long, n As Long, x As Long, y As Long
    x = LBound(arr): y = UBound(arr)
    ReDim a(x To y)
    For i = x To y
        If i <> v Then a(i - n) = arr(i) Else n = n + 1
    Next i
    If (y - n) >= x Then ReDim Preserve a(x To y - n)
    arr = a
End Sub
相关问题