【VBA】複数シートの行を削除する

複数シートの行を削除するする時は、For Each(繰り返し処理)で各シートを1つずつ移動しながら、行の削除を行います。

サンプルコードでは、Rowsを使って行削除を行っています。RangeやEntireRowを使った行削除を行いたい場合は、次の記事を参考にしてください。

【VBA】行を削除する

同じ行を削除する場合

全てのシートで同じ行を削除する場合は、シンプルにシートをFor Eachで移動しながら、対象行を削除します。

コード

1行目をすべてのシートから削除します。

 

解説

サンプルコードでは、繰り返し処理で変数wsにシートが格納されます。

wsには、その時に処理対象となっている1つのシートが格納されています。

繰り返し処理の中で変数wsに格納されているシートの1行目を、Rows(1).Deleteで削除しています。

削除したい行にあわせて、この行番号を修正すれば他の行を削除できます。

 

セルの値を判定して削除する場合

セルの値を判定して一致する行を削除したい場合は、For Eachで各シートを移動しながら、その中でさらに行を1行ずつ調べながら削除します。

この場合は、条件に一致する行が複数ある場合は、一致する行全てが削除されます。

行を1件ずつ調べて削除する時は、後ろの行から削除していきます。理由は次の記事を参考にしてください。

【VBA】条件に一致する行をまとめて削除する

 

コード

すべてのシートの1~100行目の中で、1行目のセルの値が×の行を削除します。

 

解説

サンプルコードでは、繰り返し処理で変数wsにシートが格納されます。

シートの繰り返し処理(For Each)の中で、さらに行を1行ずつ調べる繰り返し処理(For)を行っています。

1行ずつ調べる繰り返し処理では、ws.Cells(i, 1).Valueで対象行の1行目の値を調べ、×の場合に行を削除しています。

行削除の基本や、その他の応用テクニックは下の記事を見てください。

【VBA】行を削除する

 

関連記事

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