本帖最后由 guidao999 于 2017-6-20 23:19 编辑
在VBA中,我感觉数组声明存在很多混乱的地方,而且也没有详细的教程对此进行说明。我经过自己的测试,总结以下几点,欢迎大家指正:
一、关于数组声明:
Sub ceshi( ) Dim arr1(0 To 4) As Integer 'arr1变量的类型是Integer() Dim arr2(1 To 3) 'arr2变量的类型是Variant() Dim arr3() As Integer 'arr3变量的类型是Integer() Dim arr4() 'arr4变量的类型是Variant() Dim arr5 'arr5变量的类型是Variant
'arr4和arr5的区别在于arr4只能赋值数组,但是arr5还可以赋值Integer、Range等任意变量类型
'arr3,arr4可以通过如下方式赋值。但是arr1,arr2,arr3不能。 '说明要将数组直接赋值给变量,该变量不能定义类型和数组大小 arr4 = Array(2, 4, 5) arr5 = [{3,6}] arr4 = Range("a1:a3").Value
'arr1和arr3都属于Integer(),只有arr1可以赋值给arr3,反之不行。 arr1(2) = 3 arr1(3) = 99 arr3 = arr1
'只有定义了数组大小的变量arr1,arr2才能用索引的方式逐个赋值。 arr2(2) = "可以存储文本变量" arr1(1) = 34
'arr3,arr4,arr5需要以下方式重新定义数组大小,才能用索引赋值。 ReDim arr3(4) ReDim arr5(1 To 10) arr3(2) = 3 Set arr5(9) = Range("A1:A3")
'定义大小的动态数组,还可以直接将数组赋值给变量。 ReDim arr4(2 To 100) arr4 = Array(2, 1)
'特别注意:下面2个写法,不是将Range赋值给数组,而是将数组赋值给数组,因为省略了Range.value arr4 = Range("B1:C3") arr5 = Range("E1") '因为只有arr5才能赋值Range变量,而且必须用以下方式: Set arr5 = Range("E1") End Sub |