0
當我使用Range1.Range2時,我用Range2擴展或縮小了Range1。在試圖回答一個問題時,我遇到了Range2與Range1沒有任何關係的用法。我認爲這將返回一個錯誤,但它返回了我不明白的地址。Range1.Range2返回奇怪的地址
該宏:
Sub Test()
Debug.Print Range("A2").Range("B1").Address
Debug.Print Range("B3").Range("B5").Address
Debug.Print Range("C4").Cells(10, 5).Address
Debug.Print Range("D5").Cells(10, 15).Address
Debug.Print Range("D5:F10").Cells(10, 15).Address
Debug.Print Cells(5, 6).Cells(12, 15).Address
Debug.Print "======"
' Specifying the sheet does not seem to affect the result
Debug.Print Range("B3").Cells(15, 1).Address
Debug.Print ActiveSheet.Range("B3").Cells(15, 1).Address
Debug.Print Sheets("Sheet1").Range("B3").Cells(15, 1).Address
End Sub
產生以下輸出:
$B$2
$C$7
$G$13
$R$14
$R$14
$T$16
======
$B$17
$B$17
$B$17
在我已執行此類型的所有測試中,它顯示爲:
Range1.Range2
相當於:
Cells(Range1.Row + Range2.Row - 1, Range1.Column + Range2.Column - 1)
我希望我不會遇到DOH時刻,但任何人都可以提供解釋?
我正在使用Excel 2003.其他版本的用戶是否從此宏獲得相同的輸出?
當範圍應用於Range對象,屬性是相對於Range對象。例如,如果選擇單元格爲C3,則Selection.Range(「B1」)返回單元格D3,因爲它與Selection屬性返回的Range對象有關。 (來自[MSDN](http://msdn.microsoft.com/en-us/library/office/ff834676.aspx)) –
@simoco感謝您的鏈接,我以前沒有遇到過。我將不得不嘗試將這種行爲理順爲自己。對我來說,它似乎是複製Offset對象的行爲。 –
是的,你是對的!它們非常相似,即,範圍(「C3」)。範圍(「B1:C3」)。地址給出與範圍(「C3」)相同的結果偏移量(0,1).Resize(3,2)。地址' –