【问题标题】:Copying cells to an array VBA将单元格复制到数组 VBA
【发布时间】:2016-06-23 03:31:51
【问题描述】:

当我从工作表 wsTemp 复制范围时,我正试图增加数组 arrSpecificWS。我在 ReDim Preserve arrSpecificWS(UBound(arrSpecificWS, 1) + 1) 行上收到 Subscript out of range 错误。我错过了什么?

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

【问题讨论】:

标签: arrays vba


【解决方案1】:

这是您的代码的缩短版本吗?如果不是,并且您只是在数组中添加一个范围,为什么还要在范围内循环并一次分配一个单元格的值?您可以通过为数组分配一个范围来设置数组,如下所示:

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

这要快得多,然后您就不必为重新调整数组而胡思乱想了。

【讨论】:

  • 感谢@Tim,上面的代码是我正在编写的代码的一部分。我想区分每个单元格的位置,以便我可以根据某些标准操纵单元格。以下内容实际上适用于我正在处理的内容。
  • For i = 2 To wsTemp.UsedRange.Rows.count ReDim Preserve outerArrData(2 To i) arrSpecificWS(1) = wsTemp.Cells(i, 4).Value arrSpecificWS(2) = wsTemp。 Cells(i, 5).Value arrSpecificWS(3) = wsTemp.Cells(i, 6).Value outerArrData(i) = arrSpecificWS Next i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2012-08-04
  • 1970-01-01
相关资源
最近更新 更多