我想做的是在调整原始数组大小的同时将一个数组复制到临时数组,然后将临时数组复制回调整后的原始大小。
但是,当第一个for循环运行时,我遇到了“类型不匹配”错误。
收到此错误我做错了什么?
Public Sub UpdateNamesPaid(NameValue As String, Paid As String)
NamesPaid(NamesPaidSize, 0) = NameValue
NamesPaid(NamesPaidSize, 1) = Paid
NamesPaidSize = NamesPaidSize + 1
Dim TempArray() As Variant
ReDim TempArray(0 To NamesPaidSize, 0 To 1)
Dim i As Integer
Dim j As Integer
i = 0
j = 0
For i = 0 To UBound(NamesPaid(i, j))
For j = 0 To UBound(NamesPaid(i, j))
TempArray(i, j) = NamesPaid(i, j)
Next j
Next i
ReDim NamesPaid(0 To NamesPaidSize, 0 To 1)
NamesPaid() = TempArray()
End Sub
您会误解该UBound()
函数的参数的含义:第一个参数是数组名称,第二个是您要查看的维。
正确的代码是:
Public Sub UpdateNamesPaid(NameValue As String, Paid As String)
Dim i As Long, j As Long
Dim NamesPaidSize As Long
Dim NamesPaid() As String
ReDim NamesPaid(0 To 0, 0 To 1)
NamesPaidSize = LBound(NamesPaid, 1) ' or whatever you meant...
NamesPaid(NamesPaidSize, 0) = NameValue
NamesPaid(NamesPaidSize, 1) = Paid
Dim TempArray() As String
ReDim TempArray(0 To NamesPaidSize, 0 To 1)
For i = LBound(NamesPaid, 1) To UBound(NamesPaid, 1)
For j = LBound(NamesPaid, 2) To UBound(NamesPaid, 2)
TempArray(i, j) = NamesPaid(i, j)
Next j
Next i
NamesPaidSize = NamesPaidSize + 1
ReDim NamesPaid(0 To NamesPaidSize, 0 To 1)
' NamesPaid = TempArray
For i = LBound(TempArray, 1) To UBound(TempArray, 1)
For j = LBound(TempArray, 2) To UBound(TempArray, 2)
NamesPaid(i, j) = TempArray(i, j)
Next j
Next i
End Sub
请注意,增量为1时效率可能非常低。您可以将大小为10的初始数组填满,然后填充,然后在复制步骤中再增加10。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句