声明数组变量时,这三种样式有什么区别:
Dim MyArr1 As Variant
Dim MyArr2() As Variant
Dim MyArr3()
这三个变量都是动态变量吗?
我找不到一个对这三个变量进行比较的文档链接。
更新。当执行下面这两段代码时,我真的看不出有什么区别:
代码1
Dim MyArr
MyArr = Range("a1:c10").Value
代码 2
Dim MyArr() As Variant
MyArr = Range("a1:c10").Value
不管我们使用上述三种方式中的哪一种声明数组,只要我们想要从范围中读取值并将它们赋给数组,这是否真的很重要呢?
MyArr=Range("A1:C10").Value
执行上面的代码时,变量声明发生在填充值之前。就好像我们有一行隐藏的代码:
Dim MyArr(10,3) As Variant '10 rows, and 3 columns
当我们从范围中读取数据时,MyArr
是否变成静态数组变量?
Option Explicit
,则可以执行MyArr4 = array()
而无需使用Dim
。 - user10417531Option Explicit
,实际上我们应该建议始终将其打开。 - PᴇʜDim MyArr()
明确地是一个数组,你不能赋值给它MyArr = 5
将会失败。但是Dim MyArr
完全未定义,可以被赋值为某个值MyArr = 5
或者一个数组MyArr = Range("a1:c10").Value
或者一个范围Set MyArr = Range("a1:c10")
。因此,如果要声明一个变量,尽可能具体。这意味着如果你想执行MyArr = Range("a1:c10").Value
,那么一定要将其声明为数组Dim MyArr() As Variant
,这是最具体的选项。这样就不会有人将其他东西放到其中了。 - Pᴇʜ