Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » 他シート削除マクロをショートカットメニューから実行できるように

他シート削除マクロをショートカットメニューから実行できるように

対象:Excel2003, Excel2007, Excel2010

アクティブなシートだけを残して他のシートを削除するマクロをご紹介しました。

他のシートをすべて削除するマクロですから、シート見出しを右クリックしたときに表示されるショートカットメニューから実行できるようになっていると便利です。

[スポンサードリンク]

そのための、ショートカットメニューをカスタマイズするマクロをご紹介しておきます。

▼他のシートをすべて削除するマクロをシート見出しのショートカットメニューから実行できるようにするマクロ

Sub ショートカットメニューのカスタマイズ()

 Dim oCBCtrl As CommandBarControl

 Set oCBCtrl = _
  Application.CommandBars("Ply").Controls.Add( _
   Type:=msoControlButton, _
   Temporary:=True)

 With oCBCtrl
  .Caption = "他のシートをすべて削除する"
  .OnAction = "他のシートをすべて削除する"
 End With

End Sub

シート見出しのショートカットメニューにコマンドを登録して
 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
を入れてあります。

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » 他シート削除マクロをショートカットメニューから実行できるように

「Applicationオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.