Распаковка массива и добавление элемента в массив в VBA - PullRequest
0 голосов
/ 08 июня 2018

У меня есть массив в VBA, который я хотел бы добавить, и это элемент словаря.Он назначается так:

dict.Add Key:=arr(i, 1), Item:=Array(arr(i, 2), arr(i, 3), arr(i, 4), arr(i, 5), arr(i, 6), arr(i, 7), arr(i, 8))

Однако я понимаю, что массивы в VBA очень статичны, и их нельзя просто добавить.Можно ли мне распаковать элементы массива, а затем создать новый массив (с новым элементом) и назначить его обратно как элемент словаря?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете восстановить с помощью Preserve, но только на копии словарного элемента.По-видимому, повторное создание словаря вариантного массива Item на месте недопустимо ..

Sub meh()
    Dim i As Long, itm As Variant, dict As Object

    Set dict = CreateObject("scripting.dictionary")

    dict.Add Key:=("a"), Item:=Array(1, 2, 3)

    For i = LBound(dict.Item("a")) To UBound(dict.Item("a"))
        Debug.Print dict.Item("a")(i)
    Next i

    itm = dict.Item("a")
    ReDim Preserve itm(LBound(itm) To UBound(itm) + 1)
    itm(UBound(itm)) = "new"
    dict.Item("a") = itm

    For i = LBound(dict.Item("a")) To UBound(dict.Item("a"))
        Debug.Print dict.Item("a")(i)
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...