|
VBA在定义数组时,没有指定下标的话,默认下标从0开始,这是正常的。但是我修改了一下arr数组的定义(1 to 4,1 to 3),用Array命令赋值后,得到的arr数组行列下标竟然还是从0开始。这是第一个奇怪的事。
定义brr数组没有指定下标,只是用Transpose命令转换了一下arr数组,brr数组的下标竟然是从1开始的。这是第二个奇怪的事情。
数组的脾气还真的怪,让人捉摸不定。有知道的大神给解释解释?
- Sub ArrayTest()
-
- Dim arr()
- arr = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9), Array(10, 11, 12))
- ' 填充数组,4行3列(行列下标均从0开始,这是正常的)
-
- '如果换成下面的代码,奇怪的事发生了,行列下标还是从0开始!!!
- 'Dim arr(1 To 4, 1 To 3)
- 'arr = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9), Array(10, 11, 12))
-
- Dim brr()
- brr = Application.Transpose(arr())
- ' 转置数组,3行4列(行列下标现在竟然又从1开始了,不知为何?)
-
-
- Dim crr()
- 'crr = Application.Index(arr, 2)
- '利用index获取行数据,crr是一个一维行数组,内容为(4,5,6)
-
- crr = Application.Index(brr, 2)
- 'crr是一个一维行数组,内容为(2,5,8,11)
-
-
- For i = LBound(crr) To UBound(crr)
- Debug.Print crr(i) ' 打印获取的数据
- Next i
- End Sub
复制代码
|
|