为什么Range.Address()在链接时返回第一个单元格的地址?

在为这个问题写回答时,我偶然发现了一些意想不到的行为。

Range调用链接在一起时, Address始终返回语句中第一个Range对象的地址。 例如:

 Public Sub Unexpected() Debug.Print Range("B3").Address Debug.Print Range("B3").Range("A1").Address End Sub 

返回以下输出。

 $B$3 $B$3 

但我会期望它返回链中最后一个 Range对象的地址。

 $B$3 $A$1 

任何人都可以解释此行为? 最好附上相关文件的引用和链接。

有关使用Range().Cells()文档Range().Cells()指示Cells()将返回给定Range()相对于Range()的左上angular单元格的位置。 用Range().Range()testing这个理论Range().Range()给出:

 Public Sub Unexpected() Debug.Print Range("B1:C3").Range("A1").Address '$B$1 Debug.Print Range("B1:C3").Range("B1").Address '$C$1 End Sub 

文档在这里 :

当应用于Range对象时,该属性是相对于Range对象的。

例如,如果select是单元格C3 ,则Selection.Range("B1")将返回单元格D3因为它与Selection属性返回的Range对象有关。 另一方面,代码ActiveSheet.Range("B1")总是返回单元格B1

Interesting Posts