如何将选定的单元格复制到数组(VBA,Excel)

问题描述 投票:0回答:1

有一个问题我无法解决(好吧,现在是凌晨 2 点),我想请求您的支持。

我有一个 Excel 工作表,在几个单元格中包含一些数字和文本。很多单元格都是空的:

A B C D E ...
1 文字 999
2 56 什么? 12
3
4
...

我想知道如何使用 VBA 获取具有以下属性的 2D 数组:

  1. 尺寸反映了包含数字或文本的整个矩形范围(A1:D3);
  2. 仅包含数字值(999、56 和 12);
  3. 这些数值分配了索引,反映了它们在电子表格中的位置。

结果数组应该这样定义:

arr(0, 0) = Empty
arr(0, 1) = 999
arr(0, 2) = Empty
arr(0, 3) = Empty
arr(1, 0) = 56
arr(1, 1) = Empty
arr(1, 2) = Empty
arr(1, 3) = 12
arr(2, 0) = Empty
arr(2, 1) = Empty
arr(2, 2) = Empty
arr(2, 3) = Empty

到目前为止我的方法如下:

  1. 通过识别包含文本或数字的最后一行和最后一列来指定范围(效果很好):
lastRow = ws.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ws.Cells.SpecialCells(xlCellTypeLastCell).Column

  1. 选择仅包含数字的单元格(效果很好):
Set rg = ws.Range(Cells(1, 1), Cells(lastRow, lastCol)).SpecialCells(xlCellTypeConstants, xlNumbers)
rg.Select
  1. 填充数组 - 这正是我被困的地方:-(

非常感谢您的帮助! 最大

arrays excel vba range selection
1个回答
0
投票

解决方案:循环遍历选定范围内的每个单元格:

For Each cell In rg
    arr(cell.Row, cell.Column) = cell.Value
Next
© www.soinside.com 2019 - 2024. All rights reserved.