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

Swi*_*ide 15 oop vba

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

If myObject = yourObject Then
Run Code Online (Sandbox Code Playgroud)

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

GSe*_*erg 31

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

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

你测试参考相等性 Is

If myObject Is yourObject Then 
Run Code Online (Sandbox Code Playgroud)

  • @ExcelDevelopers`Is`根据更高级别的逻辑测试引用相等,而不是相等.两个`Range`对象是不同的实例,因此`Is`正确返回false.他们引用相同范围的事实是不相关的 - "是"不能也不知道这个额外的逻辑连接,只有特定于`Range`s.如果你想检查两个`Range`s是否引用相同的工作表范围,你需要比较它们的`Address`或看看`Application.Intersect(r1,r2)`是否给出了与两者相同大小的范围`r1`和`r2`. (10认同)