您的位置:首页 > 编程语言 > VB

对VBA数组的再认识

2013-03-14 15:46 141 查看
疑问1:如果一个数组变量未定义维度(一维或二维),则其默认为一维?二维?更或多维?

两个方面:①若接下来直接对数组赋组的话,则会提示下标超界

Dim arr() As Integer

arr(1) = 1

arr(1, 1) = 1


第3句:提示下标超界;第5句:提示下标超界.
原因就是未使用Redim语句指定其下界和上界,改为下面的代码

Dim arr() As Integer
ReDim arr(3)
arr(1) = 1
MsgBox arr(1)
ReDim arr(3, 2)
arr(1, 1) = 1
MsgBox arr(1, 1)


此时程序通过.这是属于直接给数组赋值.
但若通过单元格数据直接给未定维度及上下界的数组直接赋值的话,就可以正确通过,并且此时默认就是二维数组.

并且此时生成的数组要受Option Base 1或0的影响,这点要特别注意.

写到这儿想到Split函数的应用中可以利用指定界定符将字符串进行分割,而Split函数返回的是一个一维数组,并且其起始下标是从0开始,这点不受Option Base 1的影响,写程序时要特别注意.

Dim arr() As String, y As Variant, myRng As Range
Set myRng = Range("A1:B3,C2:F4")
arr() = Split(myRng.Address, "$")
For Each y In arr
Debug.Print y
Next y
Debug.Print LBound(arr), UBound(arr)


第7句中Lbound(arr)输出为0,Ubound(arr)输出为8,请自行复制代码到VBA中进行验证.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: