数组的声明方式与其他 变量相同,即,使用 Dim、Static、Private 或 Public 语句声明。 标量变量(不是数组的变量)和数组变量之间的区别在于您通常必须指定数组的大小。 指定了大小的数组为固定大小的数组。 程序运行时大小可以更改的数组是动态数组。
数组是以 0 还是以 1 开始编制索引取决于 Option Base 语句的设置。 如果 Option Base 1 未指定,则所有数组索引都从零开始。
声明固定数组
在下面的代码行中,一个固定大小的数组声明为具有 11 行和 11 列的 Integer 数组:
VB复制
Dim
MyArray(10, 10) As Integer
第一个参数代表行;第二个参数代表列。
除非为数组指定 数据类型,否则和其他任何变量声明一样,声明数组中元素的数据类型为 Variant 。 数组的每个数字 Variant 元素使用 16 位元组。 每个字符串 Variant 元素使用 22 位元组。 要编写尽可能紧凑的代码,请显式声明数组为某个数据类型,而非 Variant 。
下面的代码行比较多个数组的大小。
VB复制
'整数数组使用22个字节(11个元素*2个字节)。
ReDim MyIntegerArray(10)
As Integer
'双精度数组使用88字节(11个元素*8字节)。
ReDim MyDoubleArray(10)
As Double
'变量数组至少使用176个字节(11个元素*16个字节)。
ReDim MyVariantArray(10)
'整数数组使用100*100*2字节(20000字节)。
ReDim MyIntegerArray(99,
99) As Integer
'双精度阵列使用100*100*8字节(80000字节)。
ReDim MyDoubleArray(99,
99) As Double
'变量数组至少使用160000字节(100*100*16字节)。
ReDim MyVariantArray(99,
99)
数组的最大大小因操作系统和可用内存而异。 使用超过系统中可用 RAM 大小的数组会导致性能下降,因为必须从磁盘读取数据和向其中写入数据。
声明动态数组
通过声明动态数据,可以在运行代码时调整数组的大小。 使用 Static 、 Dim 、 Private 或 Public 语句声明一个数组,将括号内留空,如下面的示例所示。
VB复制
Dim
sngArray() As Single
备 注:
使用 ReDim 语句在过程内隐式声明数组。 在使用 ReDim 语句时,请注意不要将数组的名称拼错。 即使 Option Explicit 语句包括在模块内,也将创建另一个数组。
在数组 范围内的过程中,使用 ReDim 语句可更改维度数、定义元素数,以及定义每个维度的上限和下限。 根据需要使用 ReDim 语句更改动态数组。 但是,每次这么做时,数组中的现有值都会丢失。 使用 ReDim
Preserve 可在保留数组中现有值的情况下扩展数组。
例如,下面的语句将数组扩增了 10 个元素,而未丢失原始元素的当前值。
VB复制
ReDim Preserve
varArray(UBound(varArray) + 10)