Excel VBA编程 数组函数
在程序中,根据实际情况,需要判断某个变量是否为数组,或者数组的下标范围,可以使用系统提供的函数来进行这些操作。下面分别介绍这些函数。
1.检测数组下标
利用Lbound与Ubound函数,可以返回指定数组中的最小或最大下标,即数组中的最小值和最大值。
格式:Lbound/Ubound(<数组名>[,<数组维序号>])
函数值为数组某维的下界(Lbound)或上界(Ubound),类型为Long,其中数组维序号为可选项,表示数组的指定维号,默认为1。
例如,显示数组中的数组元素,如图5-14所示。
图5-14 显示的结果
其代码如下:
Sub 显示数组()
Dim A(-1 To 50, 10 To 30, -13 To 4, -5 To 15)
'显示最小下标
Debug.Print "第一维数组最小下标:" & LBound(A, 1)
Debug.Print "第二维数组最小下标:" & LBound(A, 2)
Debug.Print "第三维数组最小下标:" & LBound(A, 3)
Debug.Print "第四维数组最小下标:" & LBound(A, 4)
'显示最大下标
Debug.Print "第一维数组最大下标:" & UBound(A, 1)
Debug.Print "第二维数组最大下标:" & UBound(A, 2)
Debug.Print "第三维数组最大下标:" & UBound(A, 3)
Debug.Print "第四维数组最大下标:" & UBound(A, 4)
End Sub
2.判断数组
在实际应用中,数组和变量的区分不是很清晰,特别是定义的动态数组和变量更加难以区分。为此VBA提供了isarray函数来判断是否是数组。
格式:isarray(变量名)
excel数组函数的实例其值为逻辑型,指出指定的变量是否为一个数组.是则值为true,否则为false。
例如,声明数组s和变量a,b,判断其是否数组,其代码如图5-15所示。
图5-15 显示效果
代码如下:
Sub 判断数组()
'声明数组变量
Dim s(1 To 5) As Integer, a, b
b = IsArray(a)
Debug.Print b
'使用数组函数
a = Array(1, 2, 3)
b = IsArray(s)
Debug.Print b
b = IsArray(a)
Debug.Print b
'Debug.Print s(1); a(1)
End Sub
3.数组的清除
对于静态数组,在创建完成后,其内存空间也分配完成,数组的大小将不能再改变。如果需要清除数组的内容或对数组重新定义,可以使用erase语句来完成,其格式如下:
格式:erase <数组变量名表列>
对指定的固定大小数组进行初始化,对指定的可调数组则释放其所占内存空间,数组变量名表列用来指定数组,由一个或多个用逗号隔开的数组变量名组成。
利用erase语句,可以对不同类型的静态数组产生不同的结果,如下表5-1所示。
表5-1 使用erase语句
名称 | 作用 |
固定数值数组 | 将每个元素设为 0。 |
固定字符串数组(长度可变) | 将每个元素设为零长度字符串("")。 |
固定字符串数组(长度固定) | 将每个元素设为0。 |
固定 Variant 数组 | 将每个元素设为 Empty。 |
用户定义类型的数组 | 将每个元素作为单独的变量来设置。 |
对象数组 | 将每个元素设为特定值 Nothing。 |
例如,声明变量,然后使用erase语句清除。
Sub 清除数组()
'声明数组变量
Dim NumArray(10) As Integer
Dim StrVarArray(10) As String
Dim StrFixArray(10) As String * 10
Dim VarArray(10) As Variant
Dim DynamicArray() As Integer
'分配存储空间
ReDim DynamicArray(10)
'将每个元素设为 0。
Erase NumArray
'将每个元素设为零长度字符串
Erase StrVarArray
'将每个元素设为 0。
Erase StrFixArray
'将每个元素设为 Empty
Erase VarArray
'释放数组所用内存。
Erase DynamicArray
End Sub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论