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

2019-10-21 13:55发布

写,当我遇到一些意外的行为迷迷糊糊的回答了这个问题 。

当串联起来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

任何人都可以解释这种现象? 优选用的报价,并链接到相应的文档。

Answer 1:

有关于使用文档Range().Cells()这表明Cells()将在给定内返回的位置Range()相对于所述的左上角的单元格Range() 测试这一理论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的对象。

例如,如果选择为小区C3 ,然后Selection.Range("B1")返回单元D3 ,因为它是相对于该Range由所述返回的对象Selection属性。 在另一方面中,代码ActiveSheet.Range("B1")总是返回电池B1



文章来源: Why does Range.Address() return the address of the first cell when chained?