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

Why does Range.Address() return the address of the first cell when chained?

我在编写 an answer for this question 时偶然发现了一些意想不到的行为。

Range 调用链接在一起时,Address 总是 return 语句中第一个 Range 对象的地址。例如:

Public Sub Unexpected()

    Debug.Print Range("B3").Address
    Debug.Print Range("B3").Range("A1").Address

End Sub

返回以下输出。

$B
$B

但我本以为它会 return 链中 last Range 对象的地址。

$B
$A

谁能解释一下这种行为?最好在适当的文档中引用 link。

有关使用 Range().Cells() 的文档表明 Cells() 将 return 给定 Range() 中相对于 [=13] 左上角单元格的位置=].用 Range().Range() 测试这个理论给出:

Public Sub Unexpected()

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

Documentation here:

When applied to a Range object, the property is relative to the Range object.

For example, if the selection is cell C3, then Selection.Range("B1") returns cell D3 because it’s relative to the Range object returned by the Selection property. On the other hand, the code ActiveSheet.Range("B1") always returns cell B1.