VBA 临时,关于数组的index : index的初值,index的上下限,index序列
1 数组的不同定义方式,会导致 index的起点不同
总结,简单的说,就是VBA里的数值,index默认从0 开始,而从工作表来源的函数,默认index从1开始
- 用VBA的数值array() 或者 dim 或者 redim 这几种方法,默认index从0开始
- 当然 dim 或者 redim 可以声明从1开始或从其他开始
- 而从工作表区域赋来的数组,无论是1维还是2维,index都从1开始
- [{}] 这种赋值方式,我认为是偏工作表的,
- 因为 [a1:b5] 就等同于 range("a1;b5")
Sub test18a()
Dim arr1, arr2, arr3, arr4, arr5
'一维数组
'数组的多种定义和index初值
'总结,用VBA的数值array() 或者 dim 或者 redim 这几种方法,默认index从0开始
'当然 dim 或者 redim 可以声明从1开始或从其他开始
'[{}] 这种赋值方式,我认为是偏工作表的,
'因为 [a1:b5] 就等同于 range("a1;b5")
' 而从工作表区域赋来的数组,无论是1维还是2维,index都从1开始
arr1 = Array(1, 2, 3, 4, 5)
arr2 = [{6,7,8,9,10}]
arr3 = Application.WorksheetFunction.Transpose(Range("a1:a5"))
arr4 = WorksheetFunction.Transpose(Range("c1:g1"))
arr5 = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range("c1:g1")))
ReDim arr6(4)
For i = 0 To 4
arr6(i) = i
Next
Debug.Print "arr1的index从小到大为" & LBound(arr1, 1) & " " & UBound(arr1, 1)
Debug.Print "arr2的index从小到大为" & LBound(arr2, 1) & " " & UBound(arr2, 1)
Debug.Print "arr3的index从小到大为" & LBound(arr3, 1) & " " & UBound(arr3, 1)
Debug.Print "arr4的index从小到大为" & LBound(arr4, 1) & " " & UBound(arr4, 1)
Debug.Print "arr5的index从小到大为" & LBound(arr5, 1) & " " & UBound(arr5, 1)
Debug.Print "arr6的index从小到大为" & LBound(arr6, 1) & " " & UBound(arr6, 1)
End Sub
2 获得array的内容
- 获得单个元素
- 使用类这样的语句即可 arr1(1)=1 或 arr1(1,2)
- 获得所有元素
- 遍历法1: for each in 可以无视几维数组
- 遍历法2:for i =lbound(arr,1) to ubound(arr1,1) 需要先理解数组的维数等 数组结构
Sub test18b()
arr1 = Array(1, 2, 3, 4, 5)
arr2 = [{6,7,8,9,10}]
arr3 = Application.WorksheetFunction.Transpose(Range("a1:a5")) '表现为1行,可认为是1维数组
arr4 = WorksheetFunction.Transpose(Range("c1:g1")) '表现为1列默认为2维数组
arr5 = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range("c1:g1"))) '表现为1行,可认为是1维数组
ReDim arr6(4)
For i = 0 To 4
arr6(i) = i
Next
Debug.Print "取数组中的单个值"
Debug.Print arr1(1)
Debug.Print arr2(1)
Debug.Print arr3(1)
Debug.Print arr4(1, 1)
Debug.Print arr5(1)
Debug.Print arr6(1)
Debug.Print "遍历数组中的所有值"
For Each i In arr1
Debug.Print i;
Next
Debug.Print
For Each i In arr4
Debug.Print i;
Next
Debug.Print
For i = LBound(arr4, 1) To UBound(arr4, 1)
Debug.Print "arr4(" & i & ")=" & arr4(i, 1) & " ";
Next
Debug.Print
End Sub
3 如何取出数组的index呢?
赞 (0)