ReDim保留阵列-VBA

时间:2019-09-06 07:05:34

标签: arrays excel vba

  1. 初始化数组-空
  2. ReDim Preserve,当我第一次循环迭代时
  3. 当我使用ReDim时,代码可以正常工作-增加数组的大小,但数组的前一部分为空。

enter image description here

  1. 但是在第二次迭代中,当我尝试增加数组的大小时,在行ReDim Preserve arrTips(Counterarr, 5)中出现错误。

enter image description here

代码:

Option Explicit

Sub test()

    Dim arrTips() As Variant
    Dim i As Long, Counterarr As Long

    'Set counter to start array
    Counterarr = 0

    For i = 1 To 10

        'Increase array lenght
        ReDim Preserve arrTips(Counterarr, 5)

        arrTips(Counterarr, 0) = ""
        arrTips(Counterarr, 1) = ""
        arrTips(Counterarr, 2) = ""
        arrTips(Counterarr, 3) = ""
        arrTips(Counterarr, 4) = ""
        arrTips(Counterarr, 5) = ""

        Counterarr = Counterarr + 1

    Next i

End Sub

1 个答案:

答案 0 :(得分:3)

ReDim Preserve只能调整最后一个参数的大小,而使用Preserve时不能调整其他参数的大小。

根据ReDim statement的官方文档:

  

如果使用Preserve关键字,则只能调整最后一个数组维的大小,而根本不能更改维数。例如,如果数组只有一个维,则可以调整该维的大小,因为它是最后一个维。但是,如果数组具有两个或多个维,则可以仅更改最后一个维的大小,并仍然保留数组的内容。