Excel VBA中Is运算符判断Range对象返回False的原因咨询
VBA中Is运算符判断Range对象返回False的原因分析
问题核心
你的代码里,工作表对象用Is判断返回True,但指向同一单元格的两个Range变量用Is返回False,原因在于VBA对不同对象的实例处理逻辑不同:
- 工作表对象:
Sheets(1)是单例引用,每次调用都会返回内存中同一个对象实例,所以my01和my02指向同一个对象,Is运算符判断返回True。 - Range对象:每次调用
Sheets(1).Range("A1"),VBA都会创建一个新的Range对象实例——虽然它们指向工作表中同一个单元格,但本质是两个独立的内存对象。Is运算符的作用是判断两个变量是否指向同一个对象实例,因此返回False。
补充说明
=运算符判断的是Range对象的内容/值是否相等,而非对象实例本身,所以能正常返回True。- 如果要让
Is对Range返回True,需让两个变量指向同一个Range实例,示例代码:
Dim my01, my02, tempRange Set tempRange = Sheets(1).Range("A1") Set my01 = tempRange Set my02 = tempRange MsgBox my01 Is my02 ' 此时返回True
内容的提问来源于stack exchange,提问作者오바마
相关产品推荐
相关产品推荐

