VBA:如何测试对象相等性(两个变量是否引用同一个对象)

时间:2012-06-28 23:44:02

标签: oop vba

测试相同自定义对象类型的两个变量是否引用同一对象的运算符或函数是什么?我试过了

If myObject = yourObject Then

但是获取运行时错误438对象不支持此属性或方法。我猜这是告诉我覆盖'='运算符来测试两个对象的所有字段是否具有相同的值。但我想要的是测试它们是否是同一个物体。

2 个答案:

答案 0 :(得分:31)

  

我猜这是在告诉我覆盖'='运算符来测试两个对象的所有字段是否具有相同的值。

不,它告诉您对象没有默认属性,否则将被调用,并且返回的结果进行比较。

使用Is

测试引用相等性
If myObject Is yourObject Then 

答案 1 :(得分:0)

您需要以某种方式序列化对象,然后按属性值比较属性。 “ is”运算符非常愚蠢,只有在另一个对象与分配给比较变量的实例相同时,它才匹配。 我建议使用jsonStringify库。从https://github.com/dexterial/Dextools/tree/master/Main帖子开始,我为DexTools.xlam开源项目Parsing JSON in Excel VBA修改了一个。自从我添加了许多其他excel对象的序列化/散列选项以来,它具有更多的功能,并且它是使用DexTools合并的vba测试驱动的开发完成的。它仍在进行中,所以不要指望奇迹