我有一个要从中删除项目的动态数组。我知道我们可以通过将数组的大小减小1并重新对其进行删除,从而删除数组末尾的数组。但是,不管该项目在阵列上的什么位置,有没有办法从该阵列中删除该项目?
答案 0 :(得分:1)
没有内置函数可以从数组中删除。因此,唯一的方法是将每个值“拉”一个下来,然后重新调暗以截取最后一个值。
阵列回溯到FORTAN和GWBASIC早期语言的年代,这些语言在1970年代末和80年代初在个人计算机上很流行。大多数新语言(包括VBA)都有很多更好的选择。因为这是一种“痛苦的”方法,所以我将构建一个为您删除行的函数。
此代码将显示删除的工作方式:
replace(df, as.character(df2$lab), as.list(df2$C))
输出:
Private Sub Command104_Click()
Dim MyData() As Integer
Dim i As Integer
ReDim MyData(1 To 5)
For i = 1 To 5
MyData(i) = i * 100
Next i
Call MyDisplay(MyData)
' delete 3rd row
Call MyDelete(MyData, 3)
Call MyDisplay(MyData)
End Sub
Public Sub MyDelete(v() As Integer, intPos As Integer)
Dim numRows As Integer
Dim i As Integer
numRows = UBound(v)
' move every row down one
For i = intPos To numRows - 1
v(i) = v(i + 1)
Next i
' get rid of last row
ReDim Preserve v(1 To numRows - 1)
End Sub
Public Sub MyDisplay(v() As Integer)
Dim i As Integer
For i = 1 To UBound(v)
Debug.Print i, "--->", v(i)
Next i
End Sub