ms-access - 如何从VBA中的任何位置从动态数组中删除一个值?
问题描述
我有一个动态数组,我想从中删除一个项目。我知道我们可以通过将其大小减小 1 并重新调整它来从数组末尾删除一个项目。但是有没有办法从数组中删除一个项目,无论该项目在数组上的什么位置?
解决方案
没有内置函数可以从数组中删除。因此,唯一的方法是将每个值“拉”一个,然后重新变暗以删除最后一个值。
阵列可以追溯到 1970 年代末和 80 年代初在个人计算机上流行的 FORTAN 和早期 GWBASIC 语言的旧时代。大多数新语言(包括 VBA))都有更好的选择。因为这是一种“痛苦”的方法,所以我会为你构建一个删除行的函数。
此代码将显示删除的工作原理:
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
输出:
1 ---> 100
2 ---> 200
3 ---> 300
4 ---> 400
5 ---> 500
1 ---> 100
2 ---> 200
3 ---> 400
4 ---> 500
推荐阅读
- php - Typo3 8.7.x / Extbase / Typoscript:如何设置 storagePid 以将新的自定义对象添加到 tt_content(mm 关系)
- python - Cumprod 在 Python 中给出 -inf
- c# - 使用 Timeline 跳转到应用详情页
- sql - SQL Server:如何在某些行可能有重复键的地方插入行?
- javascript - 一个 javascript 函数在循环文件之外工作,其他的则不行
- typescript - 在 TypeScript 接口中,是否可以将一个属性中的键限制为另一个属性的值?
- javascript - 试图为数据库搜索结果创建一行
- c# - 当它不是对象时,如何使用 Dapper 在 SQL 更新请求中正确声明变量?
- javascript - 问题嵌套 JSON 无法在数据表中显示值
- mysql - 报告您的直属经理的直属经理,他们有经理标志(循环)