Dim MyArry() As Single ‘声明动态数组
ReDim MyArry(30,20,10) ‘重新定义数组
ReDim MyArry(50,23,21) ‘再次重新定义数组
ReDim的语法与Dim的相同,此外,它还有选择项Preserve关键词:
ReDim Preserve 数组名 ([ [下标下界 To]下标上界]) [As 数据类型]
例如:
ReDim MyArry(50,23,21) ReDim Preserve MyArry(50,23,50)
注意:使用ReDim 时,重新定义数组会使所有数组元素的值消失,而使用Preserve可以保留数据。但是用Preserve只能在改变数组的最后一维的大小时,保留数组的数据。对于一维数组来说,所有数据都会保留,而对于多维数组:只能改变最后一维的大小,才能保留全部数组数据,否则出错。
5.LBound 函数和UBound 函数
LBound 函数和Ubound函数都是返回一个 Long 型数据,前者得到的值为指定数组维可用的最小下标,而后者得到的是最大下标。它们的语法为:
LBound(数组名[, 指定的维数])
UBound(数组名[, 指定的维数])
其中数组名是必选的。指定的维数是可选的,表明指定返回哪一维的下界。1 表示第一维,2 表示第二维,如此类推。如果省略指定的维数,就默认为是 1。
关于如何使用LBound 函数与 UBound 函数可参见下例:
Dim A(1 to 100,3,-3 to 4) As Integer '定义一三维数组,假定没有使用Option Base 语句改变数组下界的默认值。
对数组A使用Lbound 和Ubound函数,其返回值列表如下
所有维的缺省下界取决于 Option Base 语句的设置。可以看出对一数组使用LBound 函数与 UBound 函数,可用于确定一个数组中元素的个数。
对于那些在声明中用 To 子句来设定维数的数组而言,它们可以用任何整数作为下界而不受Option Base 语句的限制。
6.数组的高级功能
尽管数组最通常被用来存储成组的变量,但是在别的一些方面数组也是很有用的。可以将一个数组的内容赋值给另一个数组、创建返回数组的函数,还可以创建返回数组的属性。在许多情况下,这些技术能改进应用程序的性能。
正如可以将一个变量的值赋给另一个变量,例如 StrA = StrB ,也可以将一个数组的内容赋给另一个数组。例如,要将一字节型数组从一个位置复制到另一个位置。可以通过每次复制一个字节来实现,程序如下:
Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte) ‘参数oldCopy()是源数组,newCopy()是目标数组 Dim i As Integer ReDim newCopy (Lbound(oldCopy) To UBound(oldCopy)) '重新定义动态数组 For i = Lbound(oldCopy) To Ubound(oldCopy) '循环赋值 newCopy(i) = oldCopy(i) Next End Sub
内容版权声明:除非注明,否则皆为本站原创文章。