大家好,我们今日继续讲解VBA代码解决方案的第111讲内容:VBA数组的深入讲解,如何创建VBA数组及数组大小的判断。
一、创建数组的必要方法:
1、使用Array创建数组,看以下代码:
Sub Mynz_sz1()
Dim arr()
arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ‘将1到10十个自然数赋给数组arr
[a1].Resize(1, 10) = arr ‘将数组的值输入单格,注意这里没有用转置函数
End Sub
代码窗口
运行:
特别注意点1:使用Array创建的数组索引号默认从0开始,当然,如果已经用”OPTION BASE 1″语句指定了的另当别论。
特别注意点2:如果赋的值是文本,那需要用英文引号引起来,如:
代码: arr = Array(“张一”, “徐一”, “陈一”, “王一”)
2、使用Split创建数组
Split的作用是把一个文本,根据指定的分隔符,建立一个数组。感觉就有点像我们EXCEL中的基础操作中的”分列”。不同的是”分列”操作是将一个单格的文本按指定的分隔符分开,存放在同行的多个单格里,而Split的作用是将一个文本(也可以是存放在单格里的)按指定的分隔符分开,存放在一个数组变量里。
arr = Split(“张一,徐一,陈一,王一,许一,张二,陈二,张三,徐二,张四”, “,”)
特别注意点3:用Split把文本转换成数组,索引号总是从0开始。不管你是否使用了Option Base语句,这点和Array不同。
3、通过Range赋值创建数组
(1)循环给单格赋值
比如想把A1:A100单格的值给数组arr,则代码为:
Sub Mynz_sz2()
Dim arr(1 To 29)
For i = 1 To 29
arr(i) = Cells(i, 1)
Next
[d1].Resize(29, 1) = Application.WorksheetFunction.Transpose(arr)
End Sub
代码窗口:
运行:
(2)直接等于单格区域。这个很简单,直接数组名等于单格区域就可以了。比如想把A1:A100单格的值给数组arr,代码还可以简单写为:
代码:
arr = [a1:a100]
二 数组大小的判断方法:UBound和LBound函数
我们定义数组时,我们可以指定数组的起始索引号不为0,而为1或其他的任意数。比如Dim arr(5 to 6)定义的这个数组起始索引号为5,共有两个素。
那么,对于一个已经定义了的数组,我们想知道它的最大索引号(上界)和最小索引号(下界)是多少,怎么办呢?别慌,用UBound和LBound两个函数就可以了。
如,要想知道数组arr的上界是多少,则:UBound(arr);要想知道数组arr的下界是多少,则:LBound(arr)。想知道数组有多少个素,则:UBound(arr)- LBound(arr)+1
如代码:
Sub Mynz_sz3()
Dim arr(10 To 50)
Dim brr(1 To 10, 1 To 100)
MsgBox “第一个一维数组数组的上标是:” & UBound(arr) & Chr(13) _
& “数组的下标是:” & LBound(arr) & Chr(13) _
& “数组的素个数是:” & UBound(arr) – LBound(arr) + 1 & Chr(13) _
& “第二个两维数组第一维的上界是:” & UBound(brr, 1) & Chr(13) _
& “第二维的上界是:” & UBound(brr, 2)
End Sub
运行后:
今日内容回向:
1 如何创建数组?
2 数组的大小如何判断
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16637.html