VB可变数组定义

关键点:Dim   str()   As   string    '定义
           redim   str(n)                  '重设长度

   or     redim   Preserve  str(n)    '重设长度,并保持原来记录不变

 




详细阐述:

ReDim   语句

在过程级别中使用,用于为动态数组变量重新分配存储空间。

语法

ReDim   [Preserve]   varname(subscripts)   [As   type]   [,   varname(subscripts)   [As   type]]   .   .   .

ReDim   语句的语法包括以下几个部分:

部分   描述  
Preserve   可选的。关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。  
varname   必需的。变量的名称;遵循标准的变量命名约定。  
subscripts   必需的。数组变量的维数;最多可以定义   60   维的多维数组。subscripts   参数使用下面的语法:  
    [lower   To]   upper   [,[lower   To]   upper]   .   .   .  
    如果不显式指定   lower,则数组的下界由   Option   Base   语句控制。如果没有   Option   Base   语句则下界为   0。  
type   可选的。变量的数据类型;可以是   Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String   *   length(对定长的字符串)、Object、Variant、用户定义类型或对象类型。所声明的每个变量都要有一个单独的   As   type   子句。对于包含数组的   Variant   而言,type   描述的是该数组的每个元素的类型,不能将此   Variant   改为其它类型。  


说明

ReDim   语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的   Private、Public   或   Dim   语句声明过的动态数组的大小。

可以使用   ReDim   语句反复地改变数组的元素以及维数的数目,但是不能在将一个数组定义为某种数据类型之后,再使用   ReDim   将该数组改为其它数据类型,除非是   Variant   所包含的数组。如果该数组确实是包含在某个   Variant   中,且没有使用   Preserve   关键字,则可以使用   As   type   子句来改变其元素的类型,但在使用了此关键字的情况下,是不允许改变任何数据类型的。

如果使用了   Preserve   关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。

ReDim   X(10,   10,   10)
.   .   .
ReDim   Preserve   X(10,   10,   15)

同样地,在使用   Preserve   时,只能通过改变上界来改变数组的大小;改变下界则会导致错误。

如果将数组改小,则被删除的元素中的数据就会丢失。如果按地址将数组传递给某个过程,那么不要在该过程内重定义该数组的各维的大小。

在初始化变量时,数值变量被初始化为   0,变长的字符串被初始化为一个零长度的字符串   ( " "),而定长的字符串则用   0   填充。Variant   变量被初始化为   Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。在使用引用对象的变量之前,必须使用   Set   语句将一个已有的对象赋给该变量。在被赋值之前,所声明的对象变量有一个特定值   Nothing,这个值表示该变量没有指向任何对象的实例。

小心   如果   ReDim   语句所使用的变量在模块级别或过程级别不存在,则该语句就相当于一个声明语句。如果此后在一个更广的范围内又创建了同名的变量,即使使用了   Option   Explicit,ReDim   也将使用后声明的这个变量,且不会导致编译错误。为了避免这种冲突,就不应把   ReDim   作为声明语句使用,而只应作为重定义数组大小的语句。

注意   要改变   Variant   所包含的数组的大小,必须在试图改变其数组大小之前显式声明该   Variant   变量。

posted @ 2010-07-29 10:58  liwenqiang  阅读(9481)  评论(0编辑  收藏  举报