我正在尝试增加数组 arrSpecificWS ,因为我从工作表wsTemp复制范围。我在 ReDim Preserve arrSpecificWS(UBound(arrSpecificWS,1)+ 1) 行上收到下标超出范围错误。我错过了什么?
Dim I as long
Dim arrSpecificWS()
'Prepare data to the array
ReDim arrSpecificWS(0, 1 To 6)
For i = 2 To wsTemp.UsedRange.Rows.count
arrSpecificWS(UBound(arrSpecificWS), 1) = wsTemp.Range("D2" & i).Value
arrSpecificWS(UBound(arrSpecificWS), 2) = wsTemp.Range("E2" & i).Value
ReDim Preserve arrSpecificWS(UBound(arrSpecificWS, 1) + 1)
ReDim Preserve arrSpecificWS(UBound(arrSpecificWS, 2) + 1)
Next i
答案 0 :(得分:0)
这是您的代码的缩短版本吗?如果没有,并且您只是在数组中添加一个范围,为什么还要在该范围内循环并一次为一个单元格赋值?您可以通过为其指定范围来设置数组:
Dim arrRange() As Variant ' declare an unallocated array.
arrRange = Range("D2:E" & wsTemp.UsedRange.Rows.count)
这个速度要快得多,然后你就不必使用红色阵列。