セル選択を上下に移動する

Offsetを使用して、対象セルを上下に指定数値分移動させるコード

'アクティブセルを1つ下のセルに移動します
ActiveCell.Offset(1, 0).Select
'アクティブセルを100下のセルに移動します
ActiveCell.Offset(100, 0).Select
'アクティブセルを1つ上のセルに移動します
ActiveCell.Offset(-1, 0).Select
アクティブセルの下移動の動き
ActiveCell.Offset(1, 0).Select実行時

ワークシートに常に1つあるアクティブセルを1つ下に移動します
A1がアクティブであった場合は、A2がアクティブセルになります
どれだけ下方向に移動するかは、数値を変更すれば可能です

アクティブセルの下移動の大きな動き
ActiveCell.Offset(100, 0).Select実行時

数値を100とすれば、一気に100行分下に移動することが可能です

アクティブセルの上移動の動き
ActiveCell.Offset(-1, 0).Select実行時

また、数値をマイナスにすると上方向に進みます
A101がアクティブだった場合は、A100がアクティブセルになります
もちろんこちらも数値を大きくすればそれだけ移動行数も大きくなります

アクティブセルの上移動時のエラー発生

ただ、数値を大きくしすぎたりしてセルの存在しない方向への移動を行おうとするとエラーが発生します
A1から「ActiveCell.Offset(-1, 0).Select」を実行すると画像のエラーメッセージが表示されます
これは移動だけでなく、参照だけでエラーになるので入力やプロパティの取得などでも同様のエラーが発生しますのでOffset使用時はその数値が範囲を超えないかを注意して使用します

全てのセルを選択する

Selectメソッドを使用してワークシートの全体を範囲選択するコード

'ワークシートのセル全体を選択
Cells.Select
全てのセルを選択した状態

アクティブシート(表示されているシート)のセル全体を選択状態にします
このセル全体選択は、RangeではなくCellsというオブジェクトに対して行います
Rangeで全体選択は不可ではありませんが、無駄な使い方でややこしいので、ここではCellsを使ったほうが楽です

固定番地と相対番地

RangeとCellsはどちらも同じセルを扱うオブジェクトです
ですが、使い分けとしての考え方はRangeは固定番地を扱う場合
Cellsは相対番地を扱う場合に分けてもらうといいです

固定番地は、定まって動かない番地指定です
A1やB5などがそうです、これは動くことはありません
対して相対番地は、前に来るオブジェクトからの参照になります
例えば、「Range(”A1″)」と「Cells(1,1)」は同じ場所を指定しています
固定番地はいいとして、相対番地の場合の考え方はCellsがワークシート全てのセルと解説しました。
アクティブシートの全セル範囲の中で1行目1列目のセルという考え方です
アクティブシートは省略されているので、もともとは「ActiveSheet.Cells(1, 1)」が 「Cells(1,1)」 が同じ意味になります

全てのセルに対してのCells範囲

画像のような位置関係になります
A1が1,1でB2は2,2になっています
これはCellsの対象がこの範囲なので固定番地との差が分かりにくいかもしれません

選択範囲に対してのCells範囲

そこで対象範囲を変更してみます
この画像での対象範囲は「Selection.Cells(1, 1)」とします
上の範囲のCellsの位置数値と全く同じ個所が、別の固定番地に変わっています
Cells(1, 1) がA1だったのに対し、 Cells(1, 1) がC6に変わります
これが相対番地の考え方になります

この指定範囲でのセル番地指定はRangeでは当然行えないので、この場合にCellsを使用する必要があります
このRangeとCellsの使い分けがしっかり頭の中で行えるようになったら、セル指定に迷うことは無くなると思います

初心者のうちは、なんとなく小難しいので使い分けは基本はRangeで、全セル選択はCellsを使うって感じでええかな

離れた行・列を選択する

Selectメソッドを使用してワークシートの離れた行列を選択するコード

'ワークシートの1行目と3行目から5行目を選択
Range("1:1, 3:5").Select
'ワークシートのA列とC列からE列を選択
Range("A:A, C:E").Select
離れた行の範囲選択状態
Range(“1:1, 3:5”).Select実行時

アクティブシート(表示されているシート)の1行目と3行目から5行目を選択状態にします
「,」で区切れば、範囲選択を増やせます

離れた列の範囲選択状態
Range(“A:A, C:E”).Select実行時

列の範囲選択も同じように「,」で区切ることで指定範囲を増やしていくことができます
「,」で範囲の数を増やして、「:」で連続した範囲を指定することで自由に範囲選択を行えます

行を(範囲)選択する

Selectメソッドを使用してワークシートの行を選択するコード

'ワークシートの1行目を選択
Range("1:1").Select
'ワークシートの1~5行目を選択
Range("1:5").Select
1行目の選択状態
Range(“1:1”).Select実行時

アクティブシート(表示されているシート)の1行目を選択状態にします
引数は数字で指定を行います
数字(文字列)なので注意してください
「Range(1)」と数値として指定するとエラーになります
また結果としてセルの範囲選択となるので、1行であっても「1:1」と入力します

1行目から5行目までの選択状態
Range(“1:5”).Select実行時

複数範囲の行を選択する場合は「:」で開始と終了の行数を指定することで可能です
コードでは5行目までの範囲選択を行っています

列を(範囲)選択する

Selectメソッドを使用してワークシートの列を選択するコード

'ワークシートのA列を選択
Range("A:A").Select
'ワークシートのAからC列を選択
Range("A:C").Select
A列のみの選択状態
Range(“A:A”).Select実行時

アクティブシート(表示されているシート)のA列を選択状態にします
列の指定には、引数内のアルファベットを変更すれば指定列の選択ができます
また結果としてはセルの範囲選択が行われている状態なので、「A:A」と単独列であっても範囲選択のように「:」で接続して指定する必要があります
「Range(“A”)」とするとエラーになります

AからC列までの選択状態
Range(“A:C”).Select実行時

引数内のアルファベットを別の列で指定すると、範囲指定になります
コードではA列からC列の3列の範囲選択が行われています

Excel2007以降のワークシートなら指定アルファベットが3文字もあるので大変ですね

離れたセルを選択する

Selectメソッドを使用して連続していないセル選択をするコード

'ワークシートの連続していないセル範囲を選択
Range("A1,B3,C5").Select
離れたセルの選択状態

アクティブシート(表示されているシート)の連続していないセル範囲を選択状態にします
A1とB3とC5の3つのセルだけが選択範囲になります
引数のセルアドレスを「,」で区切ることで別の範囲として離れたセルの選択が可能になります

'ワークシートの連続していないセル範囲を選択
Range("A1,B3:C5").Select
離れたセルの範囲選択も可能になった状態

「,」で区切ることによって別の範囲となると解説したように、2つ目の「,」を「:」に変更することによって、B3からC5という範囲選択に変更することも可能です
ここでも左上の白いセルが存在し、これがアクティブセルになります

セルを範囲選択する

Selectメソッドを使用してセル範囲選択をするコード

'ワークシートの指定のセル範囲を選択
Range("A1:C5").Select
Range範囲選択時の実行結果

アクティブシート(表示されているシート)の指定のA1からC5までを選択状態にします
引数内のセル範囲は「”開始セル:終了セル”」の書式で指定します
開始から終了までの全てのセルが選択状態になります

また、このコードを実行すると左上のセルが白くなります
これはアクティブセルという常に単一のセルです
このアクティブセルと選択範囲はそれぞれ別に取得可能です

1つのセルを選択する

Selectメソッドを使用して、単一のセルを選択状態にするコード

'アクティブシートのA1セルを選択
Range("A1").Select
'アクティブシートのA1セルを選択
Range("A1").Activate
RangeSelectの動作説明
RangeSelect使用時の動き
Range("A1").Select

アクティブシート(表示されているシート)のA1セルを選択します
コード中のA1を任意のセルアドレスに変更すれば、そのセルだけが選択状態になります
このコードの前に、別のセルが選択されていたり、範囲選択がされていた場合はその範囲選択は解除されて、このA1セルだけが選択状態になります

RangeActivateの動作説明
RangeActivate使用時の動き
Range("A1").Activate

こちらは、マクロの記録の自動作成時にセルの選択時にでてくるメソッドです
Activateはアクティブセルのみを選択するコードのため、画像のように選択先が選択範囲内の場合は範囲選択が解除されずコードが実行されます
この点がSelectと大きく違う点になりますので、基本的にはセル選択はSelectを使用してください
Activateを使用する際は、この動きをしっかり頭に入れておきましょう