2015-01-07 26 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

相關問題