複数シートの行を削除するする時は、For Each(繰り返し処理)で各シートを1つずつ移動しながら、行の削除を行います。
サンプルコードでは、Rowsを使って行削除を行っています。RangeやEntireRowを使った行削除を行いたい場合は、次の記事を参考にしてください。
同じ行を削除する場合
全てのシートで同じ行を削除する場合は、シンプルにシートをFor Eachで移動しながら、対象行を削除します。
コード
1行目をすべてのシートから削除します。
1 2 3 4 5 6 7 8 9 |
'処理対象のシート Dim ws As Worksheet '繰り返し処理でシートを1つずつ移動し、行削除していく For Each ws In Worksheets ws.Rows(1).Delete Next |
解説
サンプルコードでは、繰り返し処理で変数wsにシートが格納されます。
wsには、その時に処理対象となっている1つのシートが格納されています。
繰り返し処理の中で変数wsに格納されているシートの1行目を、Rows(1).Deleteで削除しています。
削除したい行にあわせて、この行番号を修正すれば他の行を削除できます。
セルの値を判定して削除する場合
セルの値を判定して一致する行を削除したい場合は、For Eachで各シートを移動しながら、その中でさらに行を1行ずつ調べながら削除します。
この場合は、条件に一致する行が複数ある場合は、一致する行全てが削除されます。
行を1件ずつ調べて削除する時は、後ろの行から削除していきます。理由は次の記事を参考にしてください。
コード
すべてのシートの1~100行目の中で、1行目のセルの値が×の行を削除します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'処理対象のシート Dim ws As Worksheet '繰り返し処理でシートを1つずつ移動 For Each ws In Worksheets Dim i As Long '1~100行目を順番に判定し、1行目のセルの値が×の場合に行削除する For i = 100 To 1 Step -1 If ws.Cells(i, 1).Value = "×" Then ws.Rows(i).Delete End If Next i Next |
解説
サンプルコードでは、繰り返し処理で変数wsにシートが格納されます。
シートの繰り返し処理(For Each)の中で、さらに行を1行ずつ調べる繰り返し処理(For)を行っています。
1行ずつ調べる繰り返し処理では、ws.Cells(i, 1).Valueで対象行の1行目の値を調べ、×の場合に行を削除しています。
行削除の基本や、その他の応用テクニックは下の記事を見てください。