对VBA数组的再认识
2013-03-14 15:46
141 查看
疑问1:如果一个数组变量未定义维度(一维或二维),则其默认为一维?二维?更或多维?
两个方面:①若接下来直接对数组赋组的话,则会提示下标超界
第3句:提示下标超界;第5句:提示下标超界.
原因就是未使用Redim语句指定其下界和上界,改为下面的代码
此时程序通过.这是属于直接给数组赋值.
但若通过单元格数据直接给未定维度及上下界的数组直接赋值的话,就可以正确通过,并且此时默认就是二维数组.
并且此时生成的数组要受Option Base 1或0的影响,这点要特别注意.
写到这儿想到Split函数的应用中可以利用指定界定符将字符串进行分割,而Split函数返回的是一个一维数组,并且其起始下标是从0开始,这点不受Option Base 1的影响,写程序时要特别注意.
第7句中Lbound(arr)输出为0,Ubound(arr)输出为8,请自行复制代码到VBA中进行验证.
两个方面:①若接下来直接对数组赋组的话,则会提示下标超界
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中进行验证.
相关文章推荐
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- 重新认识java(十一)---- java中的数组
- 关于Java 数组内存分配一点认识
- 认识VBA语言
- 线段树和树状数组的认识与总结
- 数组的初步认识
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- VBA_把Excel某一区域的内容读入到数组中/把数组的内容写入到Excel中
- java提高篇(十八)-----数组之一:认识JAVA数组
- VBA调用C#对象方法,传递double数组参数
- 数组基本认识
- Erase arr(清空VBA数组)
- 【VBA】数组维数的确定
- VBA学习笔记(7)--vba的数组函数
- VBA简单认识
- 数组、字符串、指针的认识
- 数组的认识与使用
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- [Excel VBA]如何拷贝数组?
- vba随机化数组函数