- ベストアンサー
ワークシートの削除
For SheetSakujo = 3 To SheetCount - 1 Worksheets(SheetSakujo).Select If ActiveSheet.Name <> "★" Then If Range("A2") = "" Then ActiveWindow.SelectedSheets.Delete End If ElseIf ActiveSheet.Name = "★" Then Exit For End If Next VBAでワークシートの削除を行っています。 A2が空白のシートを消そうと思って上記のようなコードをくみましたが、 削除されるとシートが減ってしまうため、次のシートも空白だった場合、消されないで飛ばされてしまいます。 3枚目のシート:空白 4枚目のシート:空白 5枚目のシート:空白 ↓ sheetsakujoが「3」なので3枚目は削除される。 次の4枚目のシートが3枚目が削除されたため、「3番目のシート」になるため、次に削除されるのは5枚目のシート。 この場合、どのようにしたらいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 5枚目のシートから削除して、 4枚目、3枚目・・・という風にすればいいと思います。 For SheetSakujo = 3 To SheetCount - 1 のところを、 For SheetSakujo = SheetCount - 1 To 3 Step -1 みたいな。
その他の回答 (1)
- S-Fuji
- ベストアンサー率36% (592/1624)
Forループのカウントを、3からではなく、逆にSheetCount側から行います。
お礼
回答ありがとうございます。 いまファイルが壊れてしまって修復中なので試せませんが、 修復したら試してみたいと思います。 ありがとうございました。
お礼
回答ありがとうございます。 いまファイルが壊れてしまって修復中なので試せませんが、 修復したら試してみたいと思います。 ありがとうございました。