自己收集别人写的,你看是不是, 作者就是CSDN上面的高手 VB中对string array快速插入、删除某个元素的办法 Option Explicit Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal numBytes As Long) Private Sub InsertStringItem(strArr() As String, ByVal index As Long, ByVal newItem As String) Dim lastItem As Long, saveAddr As Long lastItem = UBound(strArr) saveAddr = StrPtr(strArr(lastItem)) CopyMemory ByVal VarPtr(strArr(index + 1)), ByVal VarPtr(strArr(index)), (lastItem - index) * 4 CopyMemory ByVal VarPtr(strArr(index)), saveAddr, 4 strArr(index) = newItem End Sub Private Sub DeleteStringItem(strArr() As String, ByVal index As Long) Dim lastItem As Long, saveAddr As Long lastItem = UBound(strArr) saveAddr = StrPtr(strArr(index)) CopyMemory ByVal VarPtr(strArr(index)), ByVal VarPtr(strArr(index + 1)), (lastItem - index) * 4 CopyMemory ByVal VarPtr(strArr(lastItem)), saveAddr, 4 strArr(lastItem) = vbNullString End SubPrivate Sub Command1_Click() Dim Archives() As String ReDim Archives(0 To 3) Archives(0) = "abc" Archives(1) = "xxx" Archives(2) = "asdfsd" Archives(3) = "xxx" DeleteStringItem Archives, 1 '删除Archives(1) '测试输出 Dim i As Long For i = 0 To UBound(Archives) Debug.Print Archives(i) Next End SubPrivate Sub Command2_Click() Dim Archives() As String ReDim Archives(0 To 3) Archives(0) = "abc" Archives(1) = "xxx" Archives(2) = "asdfsd" Archives(3) = "xxx" InsertStringItem Archives, 2, "加入的数据" '插入Archives(2)="加入的数据" '测试输出 Dim i As Long For i = 0 To UBound(Archives) Debug.Print Archives(i) Next End Sub
http://rainstormmaster.cnblogs.com/archive/2006/01/09/313880.html
作者就是CSDN上面的高手
VB中对string array快速插入、删除某个元素的办法
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal numBytes As Long)
Private Sub InsertStringItem(strArr() As String, ByVal index As Long, ByVal newItem As String)
Dim lastItem As Long, saveAddr As Long
lastItem = UBound(strArr)
saveAddr = StrPtr(strArr(lastItem))
CopyMemory ByVal VarPtr(strArr(index + 1)), ByVal VarPtr(strArr(index)), (lastItem - index) * 4
CopyMemory ByVal VarPtr(strArr(index)), saveAddr, 4
strArr(index) = newItem
End Sub
Private Sub DeleteStringItem(strArr() As String, ByVal index As Long)
Dim lastItem As Long, saveAddr As Long
lastItem = UBound(strArr)
saveAddr = StrPtr(strArr(index))
CopyMemory ByVal VarPtr(strArr(index)), ByVal VarPtr(strArr(index + 1)), (lastItem - index) * 4
CopyMemory ByVal VarPtr(strArr(lastItem)), saveAddr, 4
strArr(lastItem) = vbNullString
End SubPrivate Sub Command1_Click()
Dim Archives() As String
ReDim Archives(0 To 3)
Archives(0) = "abc"
Archives(1) = "xxx"
Archives(2) = "asdfsd"
Archives(3) = "xxx"
DeleteStringItem Archives, 1 '删除Archives(1)
'测试输出
Dim i As Long
For i = 0 To UBound(Archives)
Debug.Print Archives(i)
Next
End SubPrivate Sub Command2_Click()
Dim Archives() As String
ReDim Archives(0 To 3)
Archives(0) = "abc"
Archives(1) = "xxx"
Archives(2) = "asdfsd"
Archives(3) = "xxx"
InsertStringItem Archives, 2, "加入的数据" '插入Archives(2)="加入的数据"
'测试输出
Dim i As Long
For i = 0 To UBound(Archives)
Debug.Print Archives(i)
Next
End Sub
http://rainstormmaster.cnblogs.com/archive/2006/01/09/313880.html吧