参考:Public Sub MergeAnyArray(ByRef vArraySource As Variant, ByRef vArrayDest As Variant, Optional ByVal iPos As Long = -1)
Dim i As Long
Dim iLBound As Long
Dim iUBound As Long
Dim iUBound2 As Long
Dim iTemp As Long
If (Not IsArray(vArraySource)) Or (Not IsArray(vArrayDest)) Then Exit Sub
iLBound = LBound(vArraySource)
iUBound = UBound(vArraySource)
iUBound2 = UBound(vArrayDest)
iTemp = iUBound - iLBound + 1
If (iPos > UBound(vArrayDest) + 1) Or (iPos = -1) Then iPos = UBound(vArrayDest) + 1
If iPos < 0 Then iPos = 0
ReDim Preserve vArrayDest(LBound(vArrayDest) To UBound(vArrayDest) + iTemp)
For i = iUBound2 To iPos Step -1
vArrayDest(i + iTemp) = vArrayDest(i)
Next i
iUBound = iPos + iTemp - 1
For i = iPos To iUBound
vArrayDest(i) = vArraySource(i - iPos)
Next i
Erase vArraySource
End Sub
Dim i As Long
Dim iLBound As Long
Dim iUBound As Long
Dim iUBound2 As Long
Dim iTemp As Long
If (Not IsArray(vArraySource)) Or (Not IsArray(vArrayDest)) Then Exit Sub
iLBound = LBound(vArraySource)
iUBound = UBound(vArraySource)
iUBound2 = UBound(vArrayDest)
iTemp = iUBound - iLBound + 1
If (iPos > UBound(vArrayDest) + 1) Or (iPos = -1) Then iPos = UBound(vArrayDest) + 1
If iPos < 0 Then iPos = 0
ReDim Preserve vArrayDest(LBound(vArrayDest) To UBound(vArrayDest) + iTemp)
For i = iUBound2 To iPos Step -1
vArrayDest(i + iTemp) = vArrayDest(i)
Next i
iUBound = iPos + iTemp - 1
For i = iPos To iUBound
vArrayDest(i) = vArraySource(i - iPos)
Next i
Erase vArraySource
End Sub
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
Dim a(1 To 1000) As Byte
Dim b(1 To 1000) As Byte
Dim c(1 To 2000) As Byte
CopyMemory c(1), a(1), Len(a(0)) * 1000
CopyMemory c(1001), b(1), Len(b(1)) * 1000
End Sub
注意:a,b,c三个数组的类型一定要相同;一定要弄准a,b,c三个数组的个数及分界点,以免拷贝错误。
我想不到还有比这个更快的办法,给分吧。
如果调试有误,可以在QQ(4822210)上给我留言,以作进一步探讨.
Dim a(1 To 2) As Byte
Dim b(1 To 2) As Byte
Dim c(1 To 4) As Byte
a(1) = 1
a(2) = 2
b(1) = 3
b(2) = 4
c(1) = 5
c(2) = 6
CopyMemory c(1), a(1), Len(a(1)) * 2
CopyMemory c(2), b(1), Len(b(1)) * 2
Stop
End Sub
结果:c(1) =1
c(2) =3
c(3) =4
c(4) =0不对
CopyMemory c(1), a(1), Len(a(1)) * 2
CopyMemory c(3), b(1), Len(b(1)) * 2
可以加分了吧?