Не получается вложить словарь в словарь - VBA

Узнай цену своей работы

Формулировка задачи:

Друзья, доброго времени суток! Не могу понять, почему у меня не получается вложить словарь в словарь.
Листинг программы
  1. Set Header = CreateObject("Scripting.Dictionary")
  2. Dim ColName As Variant
  3. Dim CNames As Variant
  4. Dim Ctr As Long
  5. Dim BufNames As Object
  6. Set BufNames = CreateObject("Scripting.Dictionary")
  7. CNames = Split(NamesOfColumns, "|||")
  8. Ctr = 0
  9. For Each ColName In CNames
  10. BufNames.Add ColName, Ctr
  11. Ctr = Ctr + 1
  12. Next
  13. Header.Add "NAMES", BufNames
  14. NumOfColumns = Ctr
В Watches почему-то пишет, что item "Names" в словаре Header содержит значение типа Variant/String. При этом BufHeader в порядке, все элементы отображаются нормально. Может требуются какие-то дополнительные итерации, чтобы засунуть туда ссылку на объект? Весь вечер мучаюсь, не могу понять в чем дело. Если кто знает в чем дело, подскажите, пожалуйста. С уважением.

Решение задачи: «Не получается вложить словарь в словарь»

textual
Листинг программы
  1. Sub uuu()
  2.     Dim x&
  3.     Dim sd1 As Object, sd2 As Object
  4. '--------------------------------------------
  5.    Set sd1 = CreateObject("Scripting.Dictionary")
  6.     Set sd2 = CreateObject("Scripting.Dictionary")
  7.    
  8.     For Each el In Array("a", "b", "c")
  9.         x = x + 1
  10.         sd1.Item(el) = x
  11.     Next
  12.  
  13.     Set sd2.Item("NAMES") = sd1
  14.    
  15.     sd_keys = sd2.keys
  16.     sd_items = sd2.Items
  17.  
  18.     sd_sub_dic_keys = sd2.Item("NAMES").keys
  19.     sd_sub_dic_items = sd2.Item("NAMES").Items
  20.    
  21. End Sub
  22.    
  23. Sub ttt()
  24.     Dim x&
  25.     Dim sd As Object
  26. '---------------------
  27.    Set sd = CreateObject("Scripting.Dictionary")
  28.     Set sd.Item("NAMES") = CreateObject("Scripting.Dictionary")
  29.    
  30.     For Each el In Array("a", "b", "c")
  31.         x = x + 1
  32.         sd.Item("NAMES").Item(el) = x
  33.     Next
  34.  
  35.     sd_keys = sd.keys
  36.     sd_items = sd.Items
  37.  
  38.     sd_sub_dic_keys = sd.Item("NAMES").keys
  39.     sd_sub_dic_items = sd.Item("NAMES").Items
  40.    
  41. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы