此代码有424个对象错误。
Dim singleKey As Variant
For Each singleKey In thecollection.Keys()
Debug.Print thecollection.Item(singleKey).Country
Next singleKey
该错误是由debug.print行引起的。
国家/地区属于自定义类别。
我很茫然。
答案 0 :(得分:1)
如果我删除“国家/地区”,则代码将运行并返回索引号。
然后,您正在用数字填充字典,这可能是由于将Key
和Item
自变量转换为Dictionary.Add
方法,但这很难看出来。
“必需对象”表示您要对不是对象的东西(例如数字或字符串)进行成员调用。
为了使thecollection.Item(singleKey).Country
成功,您需要用具有thecollection
属性的对象填充Dictionary
(Country
BTW的一个非常误导的名称)。
例如,您将有一个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
然后您的代码将起作用。就是说,我意识到这是示例代码,但是迭代字典键并不能使我感到非常有效。