2015-01-07 27 views
1

当我为this question编写an answer时,我偶然发现了一些意外的行为。为什么Range.Address()在链接时返回第一个单元格的地址?

当链接在一起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 

任何人都可以解释这种行为吗?最好附上适当文件的引用和链接。

回答

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 

Documentation here

当应用于Range对象,属性是相对Range对象。

例如,如果选择为细胞C3,然后返回Selection.Range("B1")细胞D3,因为它的相对于由Selection属性返回的Range对象。另一方面,代码ActiveSheet.Range("B1")总是返回单元格B1

相关问题