VBAで行を削除する時は、Deleteメソッドを使用します。
削除する行を指定するには、RangeやRowなど3つの方法があります。
1行削除する
1つの行を削除するには、3つの方法があります。
サンプルコードでは、2行目を削除します。
方法1. Rangeを使った行の削除
Rangeでは引数で、「開始行:終了行」と指定します。
1行しか選択しない時は、開始行と終了行には同じ数値を設定します。
その後、Deleteメソッドで削除します。
コード
1 2 3 4 |
'2行目を削除 Range("2:2").Delete |
解説
Range(“2:2”)となっているので、開始行が2、終了行も2となります。
なので、2行目が削除されます。
・Rangeの引数は、ダブルクォーテーションで囲む
・Rangeでは1行しか削除しない時でも、開始行と終了行を指定する
方法2. Rowsを使った行の削除
Rowsによる指定では、引数で対象行を指定します。
Rowsは、日本語で「行」という意味です!
その後、Deleteメソッドで削除します。
対象行の数値は、ダブルクォーテーションで囲みません。
コード
1 2 3 4 |
'2行目を削除 Rows(2).Delete |
解説
Rows(2)が2行目を意味します。
その行に対してDeleteメソッドを実行しているので、2行目が削除されます。
・Rowsの引数は、ダブルクォーテーションで囲まない
方法3. EntireRowを使った行の削除
EntireRowは、対象セルの行全体を返します。
EntireRowに対してDeleteすることで、セルで指定した行が削除されます。
コード
1 2 3 4 5 |
'2行目を削除 '対象セルをRange指定 Range("A2").EntireRow.Delete |
解説
プログラムの意味は、次のようになります。
- Range(“A2″)で、A2セルを指定
- EntireRowは行を返すので、2行目を返す
- Deleteで、EntireRow(2行目)を削除する
対象セルの指定は、Range、Cellsどちらの方法でも可能です。
・EntireRowによる指定では、セル視点で行を削除できる
連続した複数行を削除する
1行削除する時と同じように、連続した行を削除するには、3つの方法があります。
サンプルコードでは、2行目から6行目を削除します。
方法1. Rangeを使った行の削除
Rangeの引数で、選択する範囲の開始行と終了行をコロン(:)でつなぐと行を指定できます。
指定したら、Deleteメソッドで削除します。
コード
1 2 3 4 |
'2行目から6行目を削除 Range("2:6").Delete |
解説
Range(“2:6”)なので、2行目~6行目が削除されます。
Rangeの引数は、ダブルクォーテーションで囲み、範囲をコロン(:)でつなぐ
方法2. Rowsを使った行の削除
Rowsの引数で、選択する範囲の開始行と終了行をコロン(:)でつなぐと行を指定できます。
指定したら、Deleteメソッドで削除します。
コード
1 2 3 4 |
'2行目から6行目を削除 Rows("2:6").Delete |
解説
Rows(“2:6”)なので、2行目~6行目が削除されます。
Rowsは行を意味するので、Rangeを使うよりもRows使った方が、パッと見で「行を削除しているな」とわかりやすいプログラムになります。
Rowsの引数は、ダブルクォーテーションで囲み、範囲をコロン(:)でつなぐ(1行だけ削除する時は、ダブルクォーテーションで囲みません)
方法3. EntireRowを使った行の削除
EntireRowは、対象セルの行全体を返すので、A2:A6などセルを視点に行を選択できます。(先に紹介したRange、Rowsは行を視点)
EntireRowで取得した行を、Deleteメソッドで削除します。
コード
1 2 3 4 |
'2行目から6行目を削除 Range("A2:A6").EntireRow.Delete |
解説
プログラムの意味は、次のようになります。
- Range(“A2:A6”)で、A2~A6のセル範囲を指定
- EntireRowは行全体を返すので、2行目~6行目を返す
- Deleteで、EntireRow(2行目~6行目)を削除する
1つの行を削除する時、RangeとCellsどちらの指定でも可能です。でも、複数行を削除する場合は、Rangeによる指定になります。
Rangeは複数のセルが指定できるのですが、Cellsは1つのセルしか指定できないからです。
離れた複数行を削除する
離れた行を削除するには、2つの方法があります。(※Rowsによる指定はできません)
サンプルコードでは、2行目、4行目、6~8行目を削除します。
方法1. Rangeを使った行の削除
Rangeの引数で対象行を指定します。
離れている行はカンマ(,)区切り、連続した行はコロン(:)で指定します。
コード
1 2 3 4 |
'2行目、4行目、6~8行目を削除 Range("2:2,4:4,6:8").Delete |
解説
2行目、4行目、6~8行目が削除されます。
この時、2行目だけを指定する時も、開始行と終了行に2を指定しないとエラーになります。
○ Range(“2:2,
× Range(“2,
指定したら、Deleteメソッドで削除します。
方法2. EntireRowを使った行の削除
対象セルを指定して、その行を削除したい場合は、EntireRowを使います。EntireRowは、指定したセルの対象行を返してくれます。
対象セル自体は、Rangeを使って指定します。
指定したら、Deleteメソッドで削除します。
コード
1 2 3 4 |
'2行目、4行目、6~8行目を削除 Range("A2,A4,A6:A8").EntireRow.Delete |
解説
Rangeでのセル指定では、離れているセルはカンマ(,)区切り、連続したセルはコロン(:)を使います。
サンプルコードでは、RangeでセルA2、A4、A6~A8のセルが指定されています。
なので、EntireRowは2行目、4行目、6~8行目になり、EntireRowをDeleteすることで2行目、4行目、6~8行目が削除されます。
・Rangeの引数は、全体をダブルクォーテーションで囲む
・離れているセルはカンマ(,)で区切る
・連続したセルはコロン(:)でつなげる
連続した行はRowsで削除できましたが、離れた行ではRowsによる削除はできません。