将单元格复制到阵列VBA

时间:2016-06-22 15:13:37

标签: arrays vba

我正在尝试增加数组 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

1 个答案:

答案 0 :(得分:0)

这是您的代码的缩短版本吗?如果没有,并且您只是在数组中添加一个范围,为什么还要在该范围内循环并一次为一个单元格赋值?您可以通过为其指定范围来设置数组:

Dim arrRange() As Variant ' declare an unallocated array.
arrRange = Range("D2:E" & wsTemp.UsedRange.Rows.count)

这个速度要快得多,然后你就不必使用红色阵列。