アクティブなシートだけを残して他のシートを削除するマクロをご紹介しました。
他のシートをすべて削除するマクロですから、シート見出しを右クリックしたときに表示されるショートカットメニューから実行できるようになっていると便利です。
そのための、ショートカットメニューをカスタマイズするマクロをご紹介しておきます。
Sub ショートカットメニューのカスタマイズ()
Dim oCBCtrl As CommandBarControl
Set oCBCtrl = _
Application.CommandBars("Ply").Controls.Add( _
Type:=msoControlButton, _
Temporary:=True)
With oCBCtrl
.Caption = "他のシートをすべて削除する"
.OnAction = "他のシートをすべて削除する"
End With
シート見出しのショートカットメニューにコマンドを登録して
Set oCBCtrl = _
Application.CommandBars("Ply").Controls.Add( _
Type:=msoControlButton, _
Temporary:=True)
表示文字列と実行するマクロともに「他のシートをすべて削除する」を指定しています。
With oCBCtrl
.Caption = "他のシートをすべて削除する"
.OnAction = "他のシートをすべて削除する"
End With
上記のCustomizeMenuBarマクロを、AUTO_OPENマクロなどから呼んでやれば自動的にシート見出しのショートカットメニューに「他のシートをすべて削除する」コマンドが表示されます。
▼サンプルファイル(017977.xls 36KByte)ダウンロード
サンプルファイルには、上記のマクロの他に
上記のマクロを呼ぶAUTO_OPENマクロ
Sub AUTO_OPEN()
Call ショートカットメニューのカスタマイズ
End Sub
既にご紹介済みの、他のシートをすべて削除するマクロ
Sub 他のシートをすべて削除する()
Dim lp As Long
If Sheets.Count < 2 Then Exit Sub
If MsgBox( _
"他のシートをすべて削除してもいいですか?", _
vbYesNo + vbDefaultButton2) = vbNo Then Exit Sub
ActiveSheet.Move Before:=Sheets(1)
Application.DisplayAlerts = False
For lp = Sheets.Count To 2 Step -1
Sheets(lp).Delete
Next lp
Application.DisplayAlerts = True
End Sub
を入れてあります。
- Newer:質問の意図を丁寧に理解しようという姿勢が嬉しかった
- Older:ユーザー定義書式でビックリマークの意味は?
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » 他シート削除マクロをショートカットメニューから実行できるように