Словарь VBA Excel внутри словаря поздняя привязка
Следующий код завершается ошибкой в инструкции debug
Sub Tets()
Dim cl_data As Object
Set cl_data = CreateObject("Scripting.Dictionary")
Dim row As Object
Dim irow As Long
For irow = 11 To 12
Set row = CreateObject("Scripting.Dictionary")
With row
row.Add "YN", Cells(irow, 2).Value
row.Add "Comment", Cells(irow, 3).Value
End With
cl_data.Add Cells(irow, 1).Value, row
Next irow
Debug.Print cl_data(CStr(Cells(irow, 1)))("YN")
End Sub
Я пытаюсь сохранить данные из столбцов A, B и C. "внешний словарь должен иметь значение из столбца A в качестве ключа, внутри находится другой словарь с данными из столбца b, сохраненными с ключом "YN", и данными из столбца c, сохраненными с ключом"Comment".
2 ответов:
Проблема здесь в том, что после вашего цикла.
For irow = 11 To 12 '… Next irow
Debug.Print irow
возвращает13
. И этого нет в вашем словаре, потому что Вы читаете только строки11
и12
.
Попробуйтеrow как массив объектов и сбросьте irow до чего-то в пределах границ после выхода из цикла.
Sub Tets() Dim irow As Long, cl_data As Object, row(11 To 12) As Object Set cl_data = CreateObject("Scripting.Dictionary") For irow = 11 To 12 Set row(irow) = CreateObject("Scripting.Dictionary") With row(irow) .Add "YN", Cells(irow, 2).Value .Add "Comment", Cells(irow, 3).Value End With cl_data.Add Key:=Cells(irow, 1).Value, Item:=row(irow) Next irow irow = 11 Debug.Print cl_data(CStr(Cells(irow, 1)))("YN") irow = 12 Debug.Print cl_data(CStr(Cells(irow, 1)))("YN") End Sub
Comments