VBA学习笔记(4)--数组和单元格互相转换说明(2017.3.23):
1. VBA的数组还是很难⽤的,其实就是⾮常难⽤!
2. 要先定义⼀个数组,可以是空的,也可以⾥⾯写个数字作为数组长度。
3. 如果是空数组,可以后⾯redim重新定义数组长度。如果不是空的,再⽤redim就会报错“数组维数已定义”!
4. dim⾥⾯不能⽤变量,报错“只能⽤常数表达式”,⾥⾯只能⽤具体数字。
5. redim不能重新定义数组维数,就是说本来dim了⼀个⼀维数组,redim不能把它改成⼆维数组。
6. redim⾥⾯貌似能⽤变量。
7. 两种⽅法,⼀种定义⼀维数组,需要结果transpose转成⾏。另⼀种定义⼆维数组,结果直接写⼊单元格。
总结:
1. VBA的数组超级难⽤,⽤过的最难⽤的!
1'第⼀种⽅法,定义⼀个⼀维数组,存放乘积,⽤transpose换成列后,写⼊单元格
2Public Sub test()
3Dim arr()
4    arr = Range("a7: b24")
5    arrNum = UBound(arr)
6'    如果arr2是个⼀维数组,后⾯要⽤transpose列转⾏
7Dim arr2()
8ReDim arr2(1To UBound(arr, 1))
9
10For i = 1To UBound(arr, 1)
11        arr2(i) = arr(i, 1) * arr(i, 2)
12Next
13'    resize从这个单元格往下数多少⾏,第⼆个参数是多少列
14'    transpose把arr2的列转成⾏
15    Range("e7").Resize(UBound(arr2), 1) = Application.Transpose(arr2)
16End Sub
17'第⼆种办法,定义⼀个⼆维数组,存放乘积,直接写⼊单元格
18Public Sub test2()
19Dim arr()
20    arr = Range("a7: b24")
21    arrNum = UBound(arr)
22'    如果arr2⼀开始就定义为⼆维数组,后⾯就不⽤转成⾏了
23Dim arr2(1To18, 1To1)
24'    本来想⽤变量作为数组⼤⼩,不过好像不⽀持,redim也不能含有变量,⽽且不能重新定义⼆维数组
25'    ReDim arr2(1 To 18,1 To 2)
vba自学好学吗26
27For i = 1To UBound(arr, 1)
28        arr2(i, 1) = arr(i, 1) * arr(i, 2)
29Next
30'    resize从这个单元格往下数多少⾏,第⼆个参数是多少列
31    Range("e7").Resize(UBound(arr2), 1) = arr2
32End Sub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。