刚刚定义了Dim x() as double还没初始化,系统没有为数组的数据部分分配内存,是一个空的数组,此时它不占用内存,但是系统为了保存数组的结构,只占用24字节的大小,因为是空的数组(没有数据区),所以使用Lbound或者Ubound求它的上下界会出现错误 初始化数组使用redim x(下界 to 上界) as ,此时系统清空数组中原有的数据,然后重新分配内存 注意变量类型一定要和定义的一直 如果想扩大数组范围又保持原有的数据,需要加入preserve关键字 redim preserve x(下界 to 新上界) as
'动态数组的一个例子。 Private Sub Command1_Click() Dim a() As Integer'定义一个可变的数组 Dim n As Integer n = 10 ReDim a(n) As Integer'重新定义大小 For i = LBound(a) To UBound(a)'用这两函数获得数据的上标和下标 a(i) = i + 1 Print i Next Print "-------------------" ReDim Preserve a(n + 2) As Integer'加Preserve维持原始数据不变,如果没有这个关键词,所有元素都将变成0 a(n + 1) = 11 a(n + 2) = 12 For i = LBound(a) To UBound(a) a(i) = i + 1 Print i Next End Sub
第2个回答 2008-09-07
你少用了个redim Dim x() As Double ReDim x(5) As Double'你少了这个 x(0) = 5 Print x(0) redim用来重新定义数组,按定义的上下界重新划分存储单元,并可为定义的变量改变存储类型
第3个回答 2008-09-07
定义了Dim x() as double 还不能使用, 必须指定x的大小才能用 如: redim x(0 to 10) as double或者 redim preserve x(0 to 10) as double才能使用
第4个回答 2008-09-07
Dim x() as double
这样声明为一个没有界定上下标的数组.
Dim x(9) as double 定义上标的数组 x(0)...x(1)...x(2)...x(9)