在为an answer撰写this question时,我偶然发现了一些意想不到的行为。
将Range
次调用链接在一起时,Address
始终返回语句中第一个Range
对象的地址。例如:
Public Sub Unexpected()
Debug.Print Range("B3").Address
Debug.Print Range("B3").Range("A1").Address
End Sub
返回以下输出。
$B$3
$B$3
但我原以为它会在链中返回 last Range对象的地址。
$B$3
$A$1
任何人都可以解释这种行为吗?最好带有相关文档的引用和链接。
答案 0 :(得分:2)
有关于使用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
。