【VBA】行を削除する

VBAで行を削除する時は、Deleteメソッドを使用します。

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

1行削除する

1つの行を削除するには、3つの方法があります。

サンプルコードでは、2行目を削除します。

方法1. Rangeを使った行の削除

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

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

その後、Deleteメソッドで削除します。

コード

 

解説

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

なので、2行目が削除されます。

POINT

・Rangeの引数は、ダブルクォーテーションで囲む
・Rangeでは1行しか削除しない時でも、開始行と終了行を指定する

 

方法2. Rowsを使った行の削除

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

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

その後、Deleteメソッドで削除します。

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

コード

 

解説

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

その行に対してDeleteメソッドを実行しているので、2行目が削除されます。

POINT

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

 

方法3. EntireRowを使った行の削除

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

EntireRowに対してDeleteすることで、セルで指定した行が削除されます。

コード

 

解説

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

  1. Range(“A2″)で、A2セルを指定
  2. EntireRowは行を返すので、2行目を返す
  3. Deleteで、EntireRow(2行目)を削除する

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

POINT

・EntireRowによる指定では、セル視点で行を削除できる

 

連続した複数行を削除する

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

サンプルコードでは、2行目から6行目を削除します。

方法1. Rangeを使った行の削除

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

指定したら、Deleteメソッドで削除します。

コード

 

解説

Range(“2:6”)なので、2行目~6行目が削除されます。

POINT

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

 

方法2. Rowsを使った行の削除

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

指定したら、Deleteメソッドで削除します。

コード

 

解説

Rows(“2:6”)なので、2行目~6行目が削除されます。

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

POINT

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

 

方法3. EntireRowを使った行の削除

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

EntireRowで取得した行を、Deleteメソッドで削除します。

コード

 

解説

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

  1. Range(“A2:A6”)で、A2~A6のセル範囲を指定
  2. EntireRowは行全体を返すので、2行目~6行目を返す
  3. Deleteで、EntireRow(2行目~6行目)を削除する

1つの行を削除する時、RangeとCellsどちらの指定でも可能です。でも、複数行を削除する場合は、Rangeによる指定になります。

Rangeは複数のセルが指定できるのですが、Cellsは1つのセルしか指定できないからです。

 

離れた複数行を削除する

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

サンプルコードでは、2行目、4行目、6~8行目を削除します。

方法1. Rangeを使った行の削除

Rangeの引数で対象行を指定します。

離れている行はカンマ(,)区切り、連続した行はコロン(:)で指定します。

コード

 

解説

2行目、4行目、6~8行目が削除されます。

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

指定したら、Deleteメソッドで削除します。

方法2. EntireRowを使った行の削除

対象セルを指定して、その行を削除したい場合は、EntireRowを使います。EntireRowは、指定したセルの対象行を返してくれます。

対象セル自体は、Rangeを使って指定します。

指定したら、Deleteメソッドで削除します。

コード

 

解説

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

サンプルコードでは、RangeでセルA2、A4、A6~A8のセルが指定されています。

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

POINT

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

・離れているセルはカンマ(,)で区切る

・連続したセルはコロン(:)でつなげる

注意すること

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

 

関連記事

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