Словарь VBA, объект класса 424 требуется ошибка - PullRequest
0 голосов
/ 07 ноября 2018

Этот код имеет ошибку объекта 424.

   Dim singleKey As Variant

    For Each singleKey In thecollection.Keys()

        Debug.Print thecollection.Item(singleKey).Country

    Next singleKey

Ошибка вызвана строкой debug.print.

Страна является частью пользовательского класса.

Я в растерянности.

1 Ответ

0 голосов
/ 07 ноября 2018

Если я удаляю «Страна», запускается код, и он возвращает индексный номер.

Затем вы заполняете свой словарь числами, возможно, из-за инвертирования аргументов Key и Item в метод Dictionary.Add, но это трудно понять, не увидев этот код.

«Требуется объект» означает, что вы совершаете вызов члена для чего-то, что не является объектом ... например, числом или строкой.

Для успеха thecollection.Item(singleKey).Country необходимо заполнить thecollection (очень вводящее в заблуждение имя для Dictionary BTW) объектами, имеющими свойство Country.

Например, у вас есть модуль класса Thing с этим кодом:

Option Explicit
Private mCountry As String

Public Property Get Country() As String
    Country = mCountry
End Property

Public Property Let Country(ByVal value As String)
    mCountry = value
End Property

Тогда вы будете создавать экземпляры этого класса и заполнять ими словарь:

Dim thing1 As Thing
Set thing1 = New Thing
thing1.Country = "Canada"
thecollection.Add "foo", thing1 ' note: key first, then the item

Тогда ваш код будет работать. Тем не менее, я понимаю, что это примерный код, но итерация словарных ключей не кажется мне очень эффективной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...