【VBA】行を選択する

VBAで行を選択状態にする時は、Selectメソッドを使用します。

選択する行を指定するには、RangeやRowなど3つの選択方法があります。

1行選択する

1つの行を選択します。

サンプルコードでは、2行目を選択状態にします。

方法1. Rangeを使った行の選択

Rangeでは引数で、「開始行:終了行」を指定します。

1行しか選択しない時は、開始行と終了行には同じ数値を設定します。

その後、Selectメソッドで選択状態にします。

コード

 

解説

Range(“2:2”)となっているので、開始行が2、終了行も2となります。

なので、2行目が選択状態になります。

POINT

・Rangeの引数は、ダブルクォーテーションで囲む

・Rangeでは1行しか選ばない時でも、開始行と終了行を指定する

 

方法2. Rowsを使った行の選択

Rowsによる指定では、引数で対象行を指定します。

Rowsは、日本語で「行」という意味です!

その後、Selectメソッドで選択状態にします。

対象行の数値は、ダブルクォーテーションで囲みません。

コード

 

解説

Rows(2)が2行目を意味します。

その行に対してSelectメソッドを実行しているので、2行目が選択状態になります。

POINT

・Rowsの引数は、ダブルクォーテーションで囲まない

 

方法3. EntireRowを使った行の選択

EntireRowは、対象セルの行全体を返します。

EntireRowに対してSelectすることで、セルで指定した行が選択状態になります。

コード

 

解説

プログラムの意味は、次のようになります。

  1. Range(“A2″)で、A2セルを指定
  2. EntireRowは行を返すので、2行目を返す
  3. Selectで、EntireRow(2行目)を選択状態にする

対象セルの指定は、Range、Cellsどちらの方法でも可能です。

POINT

・EntireRowによる指定では、セル視点で行を選択状態にできる

 

 連続した複数行を選択する

1行削除する時と同じように、連続した行を選択するには、3つの方法があります。

サンプルコードでは、2行目から6行目を選択状態にします。

方法1. Rangeを使った行の選択

Rangeはセルを扱う時によく使いますが、Rangeの引数で、選択する範囲の開始行と終了行をコロン(:)でつなぐと行を指定できます。

指定したら、Selectメソッドで選択状態にします。

コード

 

解説

Range(“2:6”)なので、2行目~6行目が選択状態になります。

POINT

Rangeの引数は、ダブルクォーテーションで囲み、範囲をコロン(:)でつなぐ

 

方法2. Rowsを使った行の選択

Rowsの引数で、選択する範囲の開始行と終了行をコロン(:)でつなぐと行を指定できます。

指定したら、Selectメソッドで選択状態にします。

コード

 

解説

Rows(“2:6”)なので、2行目~6行目が選択状態になります。

Rowsは行を意味するので、Rangeを使うよりもRows使った方が、パッと見で「行を選択しているな」とわかりやすいプログラムになります。

POINT

Rowsの引数は、ダブルクォーテーションで囲み、範囲をコロン(:)でつなぐ
(1行だけ選択する時は、ダブルクォーテーションで囲みません)

 

方法3. EntireRowを使った行の選択

EntireRowは、対象セルの行全体を返すので、A2:A6などセルを視点に行を選択できます。(先に紹介したRange、Rowsは行を視点)

EntireRowで取得した行を、Selectメソッドで選択状態にします。

コード

 

解説

プログラムの意味は、次のようになります。

  1. Range(“A2:A6”)で、A2~A6のセル範囲を指定
  2. EntireRowは行全体を返すので、2行目~6行目を返す
  3. Selectで、EntireRow(2行目~6行目)を選択状態にする

ただ実際は、それほど使う機会はない書き方だと思うので、おまけ程度に知っていれば十分です。(ループ処理などと組み合わせることで使うことがありますが・・・)

 

 離れた複数行を選択する

離れた行を選択するには、2つの方法があります。(※Rowsによる指定はできません)

サンプルコードでは、2行目、4行目、6~8行目を選択状態にします。

方法1. Rangeを使った行の選択

Rangeで対象の行を指定しますが、離れている行をカンマ(,)区切りで指定します。連続した行範囲は、コロン(:)で指定します。

コード

 

解説

2行目、4行目、6~8行目が選択されます。

この時、2行目だけを選ぶ時も、開始行と終了行に2を指定しないとエラーになります。
○ Range(“2:2,
× Range(“2,

指定したら、Selectメソッドで選択状態にします。

POINT

・Rangeの引数は、全体をダブルクォーテーションで囲む
・離れている行を、カンマ(,)で区切る
・連続した行を、コロン(:)でつなげる

 

方法2. EntireRowを使った行の選択

EntireRowは、指定したセルの対象行全体を返します。

その時、Rangeでセルを指定しますが、離れているセルをカンマ(,)区切りで指定します。連続したセル範囲は、コロン(:)で指定します。

指定したら、Selectメソッドで選択状態にします。

コード

 

解説

Rangeで、セルA2、A4、A6~A8のセルが指定されています。

なので、EntireRowは2行目、4行目、6~8行目になり、EntireRowをSelectすることで2行目、4行目、6~8行目が選択されます。

POINT

・Rangeの引数は、全体をダブルクォーテーションで囲む
・離れているセルを、カンマ(,)で区切る
・連続したセルを、コロン(:)でつなげる

注意すること

連続した行はRowsで選択できましたが、離れた行ではRowsによる選択はできません。

 

関連記事

VBAテクニック辞典
成果を出す5つのポイント
VBAテクニック辞典
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました