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番目以降をシートの枚数だけ削除していけばよいとう考え方です。
ご意見やご感想などお聞かせください! コメント機能です。