Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » メニューバーをカスタマイズするマクロ

メニューバーをカスタマイズするマクロ

対象:Excel97,Excel2000,Excel2002,Excel2003

VBA(Visual Basic for Applications)で、メニューバーを元の状態に戻す方法をご紹介しました。

このコードが必要なのは、もちろんメニューバーがカスタマイズされているなど、特殊な状況のときです。

[スポンサードリンク]

メニューバーは、以下のようなマクロを実行するとカスタマイズできます。

▼メニューバーをカスタマイズするマクロ
Sub CustomizeMenuBar()

 Dim objCB As CommandBar
 Dim objCBCtrl As CommandBarControl

 Set objCB = Application.CommandBars("Worksheet Menu Bar")

 Set objCBCtrl = objCB.Controls.Add(Type:=msoControlPopup, Temporary:=True) 
 objCBCtrl.Caption = "テスト_メニューの追加"

 With objCBCtrl
  .Controls.Add Type:=msoControlButton
  With .Controls(1)
   .Caption = "テスト_コマンド"
   .OnAction = "TestCmd"
  End With
 End With

End Sub

上記のSubプロシージャを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け、実行してみてください。

2003までのExcelなら、メニューバーに[テスト_メニューの追加]というメニュー項目が追加され、その[テスト_メニューの追加]をクリックすると、[テスト_コマンド]というコマンドが表示されるはずです。

Set objCBCtrl = objCB.Controls.Add(Type:=msoControlPopup, Temporary:=True) 
objCBCtrl.Caption = "テスト_メニューの追加"
で、メニューバーに[テスト_メニューの追加]という項目を追加しています。

「Temporary:=True」とすることで、Excel終了時にこの[テスト_メニューの追加]はメニューバーから削除されます。

With .Controls(1)
 ・・・
End With
の部分が、ドロップダウンメニュー下にコマンドを作成している箇所です。

「OnAction = "TestCmd"」が、[テスト_コマンド]をクリックしたときに「TestCmd」マクロを実行するという記述ですが、上記のコードを貼り付けただけの状態で実行すると、「TestCmd」マクロが存在しないので、「TestCmdマクロが存在しません」といったエラーメッセージが表示されるはずです。

実際の業務アプリケーションなどでメニューのカスタマイズをする場合、「OnAction」メソッドに実際に実行したいマクロを指定してください。

▼サンプルファイル(002961.xls 36KByte)ダウンロード

サンプルファイルでは、上記の「CustomizeMenuBar」マクロの他、以前ご紹介した「ResetMenuBar」マクロ、ただメッセージを出すだけのダミーのマクロ「TestCmd」マクロが、標準モジュール「Module1」に作成してあります。

「CustomizeMenuBar」マクロ
「ResetMenuBar」マクロ
を実行するとどうなるか、
「CustomizeMenuBar」マクロ実行後に作成された、
メニュー[テスト_メニューの追加]−[テスト_コマンド]
を実行するとどうなるか、ご確認ください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » メニューバーをカスタマイズするマクロ

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

検索


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

.