【发布时间】:2011-04-07 12:56:38
【问题描述】:
VBA 是否支持使用范围变量数组?
dim rangeArray() as range
dim count as integer
dim i as integer
count = 3
redim rangeArray(1 to count)
for i = 1 to count
msgbox rangeArray(i).cells(1,1).value
next
我无法让它在这种类型的应用程序中工作。我想以特定顺序存储一系列范围作为“主副本”。然后我可以对这个数组进行添加、删除、排序或执行任何操作,然后将其打印到 Excel 中的一系列范围内。 excel 似乎不支持这一点 - 它只是迫使您将数据存储在电子表格中,并且您必须重新阅读才能使用它。
【问题讨论】:
-
我想做的是实现类似于 Java 中的“容器类”所做的事情,以便能够将混合数据存储在方便的位置,最好是看不见的。在我的程序中,有一个模板部分从另一个工作表中复制进来,然后重复粘贴到活动工作表上并标记,以便用户可以识别各个部分并命名,以便我可以参考它。
-
这段代码有什么问题?你想达到什么目的?查看上面的代码,您还没有用实际的范围引用填充数组。
Set rangeArray(1) = Range("A1")后跟Set rangeArray(2) = Range("A2")后跟Set rangeArray(3) = Range("A3") -
感谢所有贡献的人。最后,我只是复制了范围,添加了新部分,按顺序重命名它们并将它们复制回原始空间。它有点厚实,但它有效。对我的主要启示是:excel 不支持持久数据和混合数据组,除非它在工作表上。问题是您可能会不小心将数据复制到错误的单元格中,因此您必须非常勤奋地放置和跟踪数据。