ツールバーはcommandbarオブジェクトで設定できます。
下の例では"test"という名前のツールバーを作成します。
ツールバーの構成は以下の通りです。
"test"ツールバーはfileメニューとInfoボタンで構成されています。
さらにFileメニューはOpenボタンとSaveボタンで構成されています。
InfoボタンはInfoメッセージをポップアップします。
Openボタンはエクセルのオープンダイアログを開きます。
Saveボタンはエクセルのセーブダイアログを開きます。
onactionプロパティでボタンが押されたときに動くマクロを指定できます。
コンボボックスやエクセル既存のボタンなども使用できます。
エクセル既存のツールバーの変更も可能です。
Sub ツールバーをつくる()
Dim cb As CommandBar
Dim menu As CommandBarPopup
Dim btn As CommandBarButton
On Error Resume Next
'ツールバーの重複作成エラーを防ぐ
CommandBars("test").Delete
On Error GoTo 0
'ツールバー"test"を作成
Set cb = CommandBars.Add("test", , , True)
'ツールバー"test"に"File"メニューを追加
Set menu = cb.Controls.Add(msoControlPopup)
menu.Caption = "File"
'ツールバー"test"に"Info"ボタンを追加
Set btn = cb.Controls.Add
With btn
.Caption = "Info"
.OnAction = "Info_Click"
.Style = msoButtonCaption
End With
With menu
'"File"メニューに"Open"ボタンを追加
Set btn = .Controls.Add
With btn
.Caption = "Open"
.OnAction = "Open_Click"
.Style = msoButtonCaption
End With
'"File"メニューに"Save"ボタンを追加
Set btn = .Controls.Add
With btn
.Caption = "Save"
.OnAction = "Save_Click"
.Style = msoButtonCaption
End With
End With
'ツールバーを表示させる
cb.Visible = True
End Sub
Sub Info_Click()
MsgBox "Infomation"
End Sub
Sub Open_Click()
Application.Dialogs(xlDialogOpen).Show
End Sub
Sub Save_Click()
Application.Dialogs(xlDialogSaveAs).Show
End Sub
Set btn = cb.Controls.Add
With btn
.Caption = "Info"
.OnAction = "Info_Click"
.Style = msoButtonCaption
End With
ここの部分は、こんな風に簡略化できます。
With cb.Controls.Add
.Caption = "Info"
.OnAction = "Info_Click"
.Style = msoButtonCaption
End With
このようにすると、冒頭のDim btn As CommandBarButtonが不要となります。