写,当我遇到一些意外的行为迷迷糊糊的回答了这个问题 。
当串联起来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()
这表明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?