- ベストアンサー
空白行の削除
エクセルのシートに下記のようなデータがあったとします。 A B C D E 1 1 2 1 2 2 3 5 3 3 3 4 3 4 4 5 4 4 このようなデータが複数のシートにあり Dの欄が空白の時、その行を削除して A B C D E 2 2 3 5 3 4 4 5 4 4 このような形にしたいのです。 一つのシート毎にはマクロを記録し、実行することでできたのですが いっぺんに複数のシートに同じ処理をかけるにはどうしたらよいでしょうか。 シートの数が多いので、いちいちシートを移動して記録したマクロを実行 するのがとても手間なのです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記のコードは参考になりますでしょうか。 (正しく動く保障はありませんので、必ずファイルのバックアップを取ることをお勧めします) Sub ProcessAllSheets() Dim sheet As Worksheet For Each sheet In Worksheets sheet.Activate '行削除処理を呼び出す Next End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
この質問に対するやり方は定石みたいなものですよ。 Sub test01() For Each sh In Worksheets MsgBox sh.Name Next End Sub を実行してみて、全てのシート名が表示されることを確認する。 ーー 次に Sub test01() Dim sh As Worksheet For Each sh In Worksheets 'MsgBox sh.Name d = sh.Range("A65536").End(xlUp).Row MsgBox d For i = d To 1 Step -1 bl = WorksheetFunction.CountBlank(Range(sh.Cells(i, "A"), sh.Cells(i, "E"))) ' MsgBox bl If bl = 0 Then Else sh.Rows(i).Delete End If Next i Next End Sub をつくり実行する。 下の行から判別していること COUNTBLANKを使うとコード行数が短くなる などが上記の特色か。 上記以外も色々なロジックが考えられよう。 データファイルをコピーしてそちらでテストすること。 マクロの記録のレベルの後に、長い長いVBAの個別問題に対する経験の期間が必要と思います。
お礼
ありがとうございます。 時間の節約になりました。