Я пытался использовать словари в VBA.Microsoft Scripting Runtime активирован, и мне удалось заполнить его данными, которые я хочу (цикл For Each
показывает мне столько же).Но тогда я больше ничего не получил
Sub Report2()
Dim wbAggr As Workbook, wbMonat As Workbook
Dim wsAggr As Worksheet
Dim iRow As Long, lRowAggr As Long
Dim dict As Scripting.Dictionary
Dim key As Variant
Set dict = New Scripting.Dictionary
Set wbAggr = ThisWorkbook
Set wsAggr = ThisWorkbook.Sheets(1)
lRowAggr = wsAggr.Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 2 To lRowAggr
dict.Add wsAggr.Cells(iRow, "K"), iRow
Next iRow
For Each key In dict.Keys '-> returns 2500 key+item pairs
Debug.Print key, dict(key)
Next key
Debug.Print "dict.Keys(20): " & dict.Keys(20)
Debug.Print "dict.Items(20): " & dict.Items(20)
Debug.Print "dict.Exists('101010074'): " & dict.Exists("101010074")
Debug.Print "dict.Exists(101010074): " & dict.Exists(101010074)
Debug.Print "dict('101010074'): " & dict("101010074")
Debug.Print "dict(101010074): " & dict(101010074)
Debug.Print "VarType(dict.Keys(20)): " & VarType(dict.Keys(20))
End Sub
Вывод для операторов Debug.Print
:
- dict.Keys (20): 101010074
- dict.Items (20): 22 * 1011 *
- dict.Exists ('101010074'): False
- dict.Exists (101010074): False
- dict ('101010074'):
- dict (101010074):
- edit: VarType (dict.Keys (20)): 8 (= строка)
Так что, если я читаю этоверно (вероятно, нет), есть ключ "101010074", но тогда почему dict.Exists("101010074")
возвращает False
?
Вывод For Each
цикла с Debug.Print key, dict(key)
:
Debug.Print key, dict(key)">