【发布时间】:2015-11-02 04:15:37
【问题描述】:
VBA 中的两个声明 Dim Array_1() as Variant 和 Dim Array_2 as Variant 有什么区别?
如果我随后使用上述声明创建数组:
Array_1 = Range("A1:A10")
Array_2 = Range("A1:A10")
在本地窗口中,我看到 Array_1 和 Array_2 的不同描述。我似乎 Array_2 包含未定义类型的值。我可以ReDimArray_2吗?
【问题讨论】:
-
简单地说: Dim Array() as variant 正在创建一个包含 Variant 类型的值的数组 Dim Array as variant 只是创建一个可以包含变量值的变量,该变量值也可能是一个数组(但实际上几乎可以是任何东西)。
-
另外,Array 是 VBA 中的一个现有函数,所以实际上
dim Array as variant不起作用。试试Dim arrayTest as variant。 -
除非你扩展你的问题,否则答案只会是,“一个是数组,另一个不是。”
-
Here 是区别之一。如果您想将任何类型的“数组”传递给函数,则传递单个
Variant而不是Variants 的数组。在后一种情况下,您必须传递Variant对象的数组,而在前一种情况下,您可以传递任何类型的数组。另外,数组是按引用传递的,而变量是按值传递的。