Vba 填充后的Redim数组
在填充数组之前,我不知道它会有多大,但在某个特定点(插入所有数据后),我希望重新分配数组,以便数组末尾没有空值。如果我把它调暗Vba 填充后的Redim数组,vba,excel,Vba,Excel,在填充数组之前,我不知道它会有多大,但在某个特定点(插入所有数据后),我希望重新分配数组,以便数组末尾没有空值。如果我把它调暗 valuesForSix() As Double 我无法使用添加值 valuesForSix(0) = 9.654 有人能帮我吗?再打一次 Dim valuesForSix() As Double ReDim valuesForSix(1) As Double valuesForSix(0) = 9.654 valuesForSix(1) = 10.25 ReDim
valuesForSix() As Double
我无法使用添加值
valuesForSix(0) = 9.654
有人能帮我吗?再打一次
Dim valuesForSix() As Double
ReDim valuesForSix(1) As Double
valuesForSix(0) = 9.654
valuesForSix(1) = 10.25
ReDim Preserve valuesForSix(10) As Double
Debug.Print valuesForSix(0)
Debug.Print valuesForSix(1)
“Preserve”关键字表示,如果阵列大小增加,则保留现有数据。ReDim it
Dim valuesForSix() As Double
ReDim valuesForSix(1) As Double
valuesForSix(0) = 9.654
valuesForSix(1) = 10.25
ReDim Preserve valuesForSix(10) As Double
Debug.Print valuesForSix(0)
Debug.Print valuesForSix(1)
“Preserve”关键字表示如果数组大小增加,则保留现有数据。您可以使用
ReDim Preserve
重新定义数组的维度。Preserve
关键字表示数组保留所有现有数据。有关详细信息,请参阅
本例初始化一个空数组,然后从1到10循环,每次添加一个额外的元素:
Dim v() As Double, i As Long
For i = 1 To 10
ReDim Preserve v(1 To i) As Double
v(i) = i
Next i
' v = [1 2 3 4 5 6 7 8 9 10]
您可以使用LBound
和UBound
通过n
元素扩展数组:
Dim v(0 To 10) As Double, n As Long
n = 7
ReDim Preserve v(LBound(v) To UBound(v) + n)
' Now v is Double(0 to 17)
您可以使用
ReDim Preserve
重新定义阵列的维度。Preserve
关键字表示数组保留所有现有数据。有关详细信息,请参阅
本例初始化一个空数组,然后从1到10循环,每次添加一个额外的元素:
Dim v() As Double, i As Long
For i = 1 To 10
ReDim Preserve v(1 To i) As Double
v(i) = i
Next i
' v = [1 2 3 4 5 6 7 8 9 10]
您可以使用LBound
和UBound
通过n
元素扩展数组:
Dim v(0 To 10) As Double, n As Long
n = 7
ReDim Preserve v(LBound(v) To UBound(v) + n)
' Now v is Double(0 to 17)
签出
Redim Preserve
。签出Redim Preserve
。此处值得注意的是:Redim Preserve仅适用于数组的最高维度。因此,例如,如果数组是ValueForSix(1,1)
,这将不起作用。这种方法确实满足了OP的需求,但不可避免地会有另一个用户出现,并想知道为什么它对他们不起作用:)。(为了澄清,我在这里并不是说这个答案需要更改。我只是留下一个注释。)这里值得注意的是:Redim Preserve只在数组的最高维度上工作。因此,例如,如果数组是ValueForSix(1,1)
,这将不起作用。这种方法确实满足了OP的需求,但不可避免地会有另一个用户出现,并想知道为什么它对他们不起作用:)。(为了澄清,我在这里并不是说这个答案需要改变。我只是留个便条。)