マクロを起動したりエクセルの機能を呼び出すボタンを、配置する方法としてツールバーがあります。ツールバーにはマクロを呼出すボタンだけでなく、Excelのボタンも置くことができるので、特定の機能をまとめたルーツバーも作成できます。Excel2007以降ツールバーがなくなり、リボンになりました。作成したツールバーはリボンのアドインタブの中にユーザー設定のツールバーとして表示されます。
1.作成方法 †まずコマンドバー(変数型:CommandBar)を作成しその上にコマンドバーにボタン(変数型:CommandBarButton)を作成して行きます。コマンドバーの名前には他のコマンドバーと重複しないようにユニークな名前をつけます。作成したコマンドバーを表示したり、削除するプロシージャも作成します。特にコマンドバーが残ったままにならないように、削除するプロシージャをWorkbookを閉じる前に必ず実行させます。 .Caption = "Close(&X)" 'ショートカットキーにXを設定した場合。 .FaceId = 358 'Excel内のアイコンを表示させる場合 .OnAction = "Tool_Close" '実行させるプロシージャ名。 .BeginGroup = True 'ボタンの前に区切り線を入れる場合。 2.サンプル †以下はボタンを2つ表示する簡単なサンプルです。 Public Const CmdBarName As String = "CompassToolBar" 'コマンドバーの名前です。 '複数の場所で使用するのでPublicで宣言します。 Public Sub ToolBar_Create() Dim ToolBar As CommandBar Dim ToolBarCtrl As CommandBarButton On Error Resume Next CommandBars(CmdBarName).Delete 'コマンドバーが残っていた場合に削除するためです。 '無かった場合エラーが発生してもいいように 'On Error Resume Nextを入れておきます。 Set ToolBar = Application.CommandBars.Add(Name:=CmdBarName, Temporary:=True) 'ツールバーを作成します。 'Temporary:=TrueはExcel終了時にコマンドバーを削除していれば基本的に不要です。 '何らかの異常によりコマンドバーを削除せずに終わった場合、 '再びExcelを立ち上げた時にコマンドバーを作成しないために入れておきます。 Set ToolBarCtrl = ToolBar.Controls.Add(Type:=msoControlButton) 'ボタンを作成します。 With ToolBarCtrl .Caption = "実行(&R)" .FaceId = 2151 .OnAction = "main" End With Set ToolBarCtrl = ToolBar.Controls.Add(Type:=msoControlButton) With ToolBarCtrl .Caption = "終了(&X)" .FaceId = 358 .OnAction = "example401_Close" End With 'Excel既存のコマンドボタンを追加する場合。 '以下のようにそのIDをセットします。 ToolBar.Controls.Add Type:=msoControlButton, ID:=2640 With Application.CommandBars(CmdBarName) .Visible = True .Position = msoBarLeft '←リボンになってから無効な設定となりました。 End With End Sub Public Sub ToolBar_Delete() On Error Resume Next CommandBars(CmdBarName).Delete End Sub '以下の2つのプロシージャは普通不要ですが、処理の中で 'コマンドバーを非表示にしたり、表示する場合に使って下さい。 Public Sub ToolBar_Visible() On Error Resume Next CommandBars(CmdBarName).Visible = True End Sub Public Sub ToolBar_Hide() On Error Resume Next CommandBars(CmdBarName).Visible = False End Sub またワークブックの各イベントに以下のような処理を追加します。 Private Sub Workbook_Open() ToolBar_Create End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ToolBar_Delete End Sub メニューバーをドロップダウンリストにする場合は以下のようにします。 With ToolBar.Controls.Add(Type:=msoControlPopup, Before:=4) '←Typeに注意。 .Caption = "リスト(&L)" '←何のプルダウンか分かるように必ず入れましょう。 With .Controls.Add(Type:=msoControlButton) .Caption = "入力" .FaceId = 1191 .OnAction = "Input" End With With .Controls.Add(Type:=msoControlButton) .Caption = "計算" .FaceId = 1190 .OnAction = "Calc" End With End With Last-modified: 2014-03-11 (火) 01:58:42 (3921d)
|