【Excel VBA】表示しているシート(アクティブシート)以外を削除する

Excelのシートをいろいろ調整するマクロを書きました。
処理が途中で止まってしまったり、憲章のために途中で止めてしまったりといった場合、ゴミシートが残ってしまうのです。そこで、ブックの状態を初期化するプロシージャも作りました。

アクティブシート以外のシートを削除します。

全体の一部です

今回は、マクロ実行時のパラメーターやログを出力するシートのみのブックにマクロを書きました。
本体のマクロ実行用とブック初期化用のボタンをシートに1つずつ(計2つ)設置しています。

本体のマクロ全体の処理は、他のブック(複数)からシートをマクロのブックに持ってきて、さらにそれらのシートを他のブックに移動するというものです。
いったん自分のところでまとめる処理をするのです。

処理が途中で止まってしまうと、もともと1シートのブックだったところに不必要なシートが残ってしまいます。

ついでに、パラメーターやログの初期化処理も入れましたが、ここでは記述を省略しています。

もちろん、本体のマクロ実行前にも、初期化用のマクロをCallしています。

実際に書いたコード

シート削除時に確認のダイアログが表示されないように、DisplayAlertsをFalseにしています。戻すのを忘れずに。
アクティブシートはボタンが設置されているシートなので、実質、ボタンが設置されているシート以外を削除することになります。

Sub deleteOtherSheets()
    Dim lngCount As Long
    
    ActiveSheet.Move Before:=Sheets(1)
    ' ダイアログ通知オフ
    Application.DisplayAlerts = False
    ' シート削除
    For lngCount = 2 To Sheets.Count
        Sheets(2).Delete
    Next lngCount
    ' ダイアログ通知オン
    Application.DisplayAlerts = True
End Sub

アクティブシートがSheets(1)になるので、2番目以降をシートの枚数だけ削除していけばよいとう考え方です。

この投稿を書いたのは・・・
Blog Admin

ガジェットが大好きで、ほぼ毎月何かしら調達しております。
無駄遣い扱いされたくないのと、何かの役に立つかと思い、記録を書くことにしたのでした。

お出かけのときには、スマホを複数台とタブレットとパソコンを持ち歩きます。
両手首にはスマートウォッチです。
こんなスタイルで生活している中での備忘録を書いています。

「Blog Admin」をフォローしてみる
Excel関連
「Blog Admin」をフォローしてみる

ご意見やご感想などお聞かせください! コメント機能です。

タイトルとURLをコピーしました