请问在vb中怎么定义一个动态数组,谢谢了

请问在vb中怎么定义一个动态数组,谢谢了,第1张

在过程级别中使用,用于为动态数组变量重新分配存储空间。语法
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 变量。

redim Preserve basicdata(1 to 6)
Private Sub Form_click()
Dim a()
ReDim a(1 To 4)
a(1) = "1"
ReDim Preserve a(1 To 6)
a(6) = "a"
For i = 1 To 6
Print a(i)
Next i
End Sub

Dim cnt1 as Variant
cnt1=array(1600,0,0,0,0)
================================
Array 函数
返回一个包含数组的 Variant。
语法
Array(arglist)
所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。
说明
用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。
Dim A As Variant
A = Array(10,20,30)
B = A(2)
使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBAArray )名称限定。如果是由类型库名称限定,则 Array 不受 Option Base 的影响。
注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。

'Way 1:
    Dim i, array(10) As Integer '定义一个Integer类型的i和数组array,其array长度为10
'Way 2:
    Dim i, array()     '定义一个i,array(),类型不定,第一次使用即绑定,array变长

数组名,不可缺省
语法lbound(arrayname[,
dimension])lbound
函数的语法包含下面部分:
部分描述arrayname必需的。数组变量的名称,遵循标准的变量命名约定。dimension可选的;variant
(long)。指定返回哪一维的下界。1
表示第一维,2
表示第二维,如此类推。如果省略
dimension,就认为是
1。说明lbound
函数与
ubound
函数一起使用,用来确定一个数组的大小。ubound
用来确定数组某一维的上界。
对具有下述维数的数组而言,lbound
的返回值见下表:dim
a(1
to
100,
0
to
3,
-3
to
4)语句返回值lbound(a,
1)=1;lbound(a,
2)=0;lbound(a,
3)=-3。所有维的缺省下界都是
0

1,这取决于
option
base
语句的设置。使用
array
函数创建的数组的下界为
0;它不受
option
base
的影响。对于那些在
dim
中用
to
子句来设定维数的数组而言,private、public、redim

static
语句可以用任何整数作为下界。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12967968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存