Excel VBA: почему здесь несоответствие типов? - PullRequest
1 голос
/ 13 июля 2020

Я новичок в Excel VBA.

Я хочу иметь словарь с ключами типа integer и значениями типа Dynami c array of integer.

Почему приводит ли следующий код к несоответствию типов при его выполнении?

Первый оператор if устанавливает словарь с ключом = 0 и массивом [0]

Второй if оператор пытается изменить ключ, чтобы он имел значение массив [0,1]

Sub tester()

    ' prepare graph adjacency dictionary
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    Dim a() As Integer
    Dim ub As Integer
    

    If (Not dict.Exists(0)) Then
        ReDim a(0 To 0)
        a(0) = 0
        dict.Add 0, a(0)
    End If
        
    If (dict.Exists(0)) Then
        ub = UBound(dict(0)) ' type mismatch here ? why ?
        ReDim a(0 To ub)
        a = dict(0)
        ReDim Preserve a(0 To ub + 1)
        a(ub + 1) = 1
        dict(0) = a
    End If
    
   
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...