Сейчас я пытаюсь узнать, как работают словари в VBA, поэтому я создал простой модуль класса A, а затем две подпрограммы, но по независящим от меня причинам цикл For
полностью пропущен внутри функции.Ниже приведен код для всех предметов, упомянутых выше.У меня действительно проверена среда выполнения сценариев Microsoft в Инструменты> Ссылки.Я не очень знаком с тем, как используются Позднее и Раннее связывание, поэтому мне интересно, не является ли это одной из проблем.
В настоящее время Set rg = LoanData.Range("AH2")
находится в таблице, я пробовал данные в этом диапазоне каки таблица, а также просто диапазон, но цикл For
в функции пропускается, если данные находятся в таблице или нет.
![Data Set](https://i.stack.imgur.com/PrlNB.png)
Модуль класса называется clsCounty
Public CountyID As Long
Public County As String
Функция называется ReadCounty
Private Function ReadCounty() As Dictionary
Dim dict As New Dictionary
Dim rg As Range
Set rg = LoanData.Range("AH2")
Dim oCounty As clsCounty, i As Long
For i = 2 To rg.Rows.Count
Set oCounty = New clsCounty
oCounty.CountyID = rg.Cells(i, 1).Value
oCounty.County = rg.Cells(i, 2).Value
dict.Add oCounty.CountyID, oCounty
Next i
Set ReadCounty = dict
End Function
Две подпрограммы для записи в непосредственныйокно
Private Sub WriteToImmediate(dict As Dictionary)
Dim key As Variant, oCounty As clsCounty
For Each key In dict.Keys
Set oCounty = dict(key)
With oCounty
Debug.Print .CountyID, .County
End With
Next key
End Sub
Sub Main()
Dim dict As Dictionary
Set dict = ReadCounty
WriteToImmediate dict
End Sub