在vba

时间:2018-05-11 11:42:14

标签: vba class dictionary member variant

我有一个类,其成员是double的数组

'cls_Person
Public Name as String
Public InAMeeting as Variant
'InAMeeting: Type: Array of Double.
'Sometimes with dimensions of 1 to 8, sometimes of 1 to 10.

我在循环中填充我的类,然后将它们填充到以字符串为键的全局字典中。

当我尝试直接从字典访问InAMeeting成员时出现问题:

'g_dict_People is a globally defined dictionary.
'KeyPerson is a unique key in the dictionary matching a filled object of type cls_Person
Dim Bravo as Double
Bravo = g_dict_People(KeyPerson).InAMeeting(3)

导致错误: 属性let过程未定义,属性get过程未返回对象(错误451)

但是,如果我首先从字典中创建对象的副本,那么它可以工作:

Dim Bravo as Double
Set temp_cls_Person = g_dict_People(KeyPerson)
Bravo = temp_cls_Person.InAMeeting(3)

我可以直接访问Name成员 - 这可以:

Dim Alpha as string
Alpha = g_dict_People(KeyPerson).Name

为何与众不同?是否与我在类定义中声明InAMeeting成员的方式有关?当它们是数组类型时,有没有办法直接访问对象的成员?

抱歉,我还没有详细介绍一个最小的工作示例 - 代码分布在多个模块和类中。

0 个答案:

没有答案