Страницы: 1
RSS
Не могу присвоить значение элементу массива, который сам является значением словаря
 
Добрый вечер.
Делаю значением словаря массив, но не могу присвоить элементу этого массива значение.
Код:
Код
Sub slomas1()
    Set dic = CreateObject("Scripting.Dictionary")
    Dim x(1 To 4)
    dic(100) = x
    dic(100)(1) = 44
    MsgBox dic(100)(1)
End Sub
возвращает пустоту, а не 44
 
Код
dic(100)(1) = 44
так нельзя. Надо сначала извлечь значение из словаря, изменить и заново поместить:
Код
atmp = dic.Items(100)
atmp(1) = 44
dic.Items(100) = atmp
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий,
Код
Sub slomas1()
    Set dic = CreateObject("Scripting.Dictionary")
    Dim x(1 To 4)
    dic(100) = x
    atmp = dic.Items(100)
    atmp(1) = 44
    dic.Items(100) = atmp
    MsgBox dic(100)(1)
End Sub
выдаёт ошибку
 
Item вместо Items....
Изменено: Дмитрий(The_Prist) Щербаков - 13.01.2021 17:16:20
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Sub slomas1()
    Set dic = CreateObject("Scripting.Dictionary")
    Dim x(1 To 4)
    x(1) = 44
    dic(100) = x
    MsgBox dic(100)(1)
End Sub
так работает, то есть сначала присваиваю значение элементу массива, а потом этот самый массив впихиваю в значение словаря
 
выше дописал - недоглядел одну строку в коде.  
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков:  Item вместо Items....
спасибо, Дмитрий, так тоже работает.
 
Код
Sub slomas1()
    Dim bbb()
    Set dic = CreateObject("Scripting.Dictionary")
    ar = Array(1, 2, 1, 3)
    For i = 1 To 4
        If dic.exists(ar(i - 1)) Then
            ReDim bbb(2)
            bbb = dic.Item(ar(i - 1))
            bbb(1) = 1000
            dic.Item(ar(i - 1)) = bbb
        Else
            ReDim bbb(2)
            For j = 0 To 2
                bbb(j) = j * 2
            Next
            dic(dic.Count) = bbb
        End If
    Next
   it = dic.Items
   k = dic.keys
End Sub
 
Aндрей, спасибо.
Страницы: 1
Наверх