

結合セルの扱い方を理解するうえで範囲の右下のセルを選択するために

[code]

    Dim RangeObj as Range
    Set Range = ActiveSheet.Range("A4:A7")
    RangeObj.Cells.SpecialCells(xlCellTypeLastCell).Select
    
[/code]

を実行したところ、シート内でのもの、つまりシートのセルの中で一番右下にある編集されたセル（下の画像の例ではG11）を選択しました。  
[![確認で使用したシート](https://i.stack.imgur.com/ZL4EP.png)](https://i.stack.imgur.com/ZL4EP.png)  
Rangeで指定したセルを持つシート全体に対して処理しているように思われますが、どのような仕様によるものでしょうか。

P.S.範囲内の右下のセルは`RangeObj.Cells(RangeObj.Count).Select`で選択出来ました。


CC BY-SA 4.0
2019-11-19T06:56:56.313
60654
2019-11-19T08:21:01.633
36687
question
vba
RangeオブジェクトのSpecialCells


プログラムの

[code]

    Dim RangeObj as Range
    Set Range = ActiveSheet.Range("A4:A7")
    
[/code]

を実行した時点では、変数RangeObjはRange型であると宣言されているだけで、初期化されていません（値は入っていません）。  
変数Rangeは初期化されて、ActiveSheet.Range("A4:A7")という値を持っています。

そういう状態で

[code]

    RangeObj.Cells.SpecialCells(xlCellTypeLastCell).Select
    
[/code]

が実行されたので、初期化されていない変数RangeObjは、セルを何も選択していない(暗黙にシート全体を対象と想定している)状態と解釈されたのでしょう。


CC BY-SA 4.0
2019-11-19T08:21:01.633
60656
2019-11-19T08:21:01.633
217
60654
answer