2012-06-28 84 views
12

什么是运算符或函数来测试相同自定义对象类型的两个变量是否引用同一个对象?我试过VBA:如何测试对象是否相等(两个变量是否引用同一对象)

If myObject = yourObject Then 

但是得到一个运行时错误438对象不支持这个属性或方法。我猜这是告诉我重写'='操作符来测试两个对象的所有字段是否具有相同的值。但我想要测试它们是否是同一个对象。

回答

26

我猜这就是告诉我重写'='操作符来测试两个对象的所有字段是否具有相同的值。

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

您测试参考平等Is

If myObject Is yourObject Then 
+0

感谢GSerg,正是我所需要的 – Swiftslide

+0

@GSerg:这似乎没有两个范围的对象。例如,设置r1 =范围(“A1”)和设置r2 =范围(“A1”),然后Debug.Print r1是r2返回False。 –

+7

@ExcelDevelopers'Is'测试引用相等性,而不是根据更高级别的逻辑进行相等。两个'Range'对象是不同的实例,因此'Is'正确返回false。它们涉及相同范围的事实是不相关的 - “Is'不能也不知道这个额外的逻辑连接,只针对'Range's。如果你想检查两个Range是否指向相同的纸张范围,你需要比较他们的Address或者看看Application.Intersect(r1,r2)是否给出了与这两个范围相同的范围'r1'和'r2'。 – GSerg

相关问题