为什么 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
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
.
我在编写 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
When applied to a
Range
object, the property is relative to theRange
object.For example, if the selection is cell
C3
, thenSelection.Range("B1")
returns cellD3
because it’s relative to theRange
object returned by theSelection
property. On the other hand, the codeActiveSheet.Range("B1")
always returns cellB1
.