我正在用 VBA 编写一个程序,它首先从一系列单元格中编译一个 Range,然后循环遍历该范围以收集单元格中的数据。
问题是我需要该范围来维持添加单元格的顺序,以便在返回时可以按正确的顺序收集数据。如果数据位于相邻的列中,则范围会将其转换为行堆栈。
看看我的意思,如果你运行这个程序:
子 test_function()
将 My_Range 调暗为范围
将 My_Cell 调暗为变体
将 i 调暗为整数
我 = 0
设置 My_Range = Union(ActiveSheet.Range("A1:A5"), ActiveSheet.Range("B1:B5"))
对于 My_Range 中的每个 My_Cell
i = i + 1
My_Cell.Value = i
下一个 My_Cell
结束子
您可以看到该范围是由两个相邻的数据列(A1:A5 和 B1:B5)编译而成,但不是这个 EXPECTED 输出:
1 6
2 7
3 8
4 9
5 10
你得到
1 2
3 4
5 6
7 8
9 10
即使您一次添加一个单元格,它也会重现此行为 Set My_Range = ActiveSheet.Range("A1") Set My_Range = Union(My_Range, ActiveSheet.Range("A2")) Set My_Range = Union(My_Range, ActiveSheet .Range("A3")) 等...
有什么方法可以保留将单元格添加到范围的顺序吗?或者是拥有单独相邻范围的唯一方法?至少(如果我不能让它保持确切的顺序)有没有办法让它做列 FIRST 和 THEN 行?
-丹尼尔