• ベストアンサー

ワークシートの削除

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枚目のシート。 この場合、どのようにしたらいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

こんにちは。 5枚目のシートから削除して、 4枚目、3枚目・・・という風にすればいいと思います。  For SheetSakujo = 3 To SheetCount - 1 のところを、  For SheetSakujo = SheetCount - 1 To 3 Step -1 みたいな。

KODAMAR
質問者

お礼

回答ありがとうございます。 いまファイルが壊れてしまって修復中なので試せませんが、 修復したら試してみたいと思います。 ありがとうございました。

その他の回答 (1)

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.2

Forループのカウントを、3からではなく、逆にSheetCount側から行います。

KODAMAR
質問者

お礼

回答ありがとうございます。 いまファイルが壊れてしまって修復中なので試せませんが、 修復したら試してみたいと思います。 ありがとうございました。

関連するQ&A