HOME > 即効テクニック > Excel VBA > メニューバー・ツールバー関連のテクニック > メニューバーへのコントロール追加と処理の分岐

即効テクニック

メニューバー・ツールバー関連のテクニック

メニューバーへのコントロール追加と処理の分岐

(Excel 97/2000)

サンプルではメニューバーにポップアップメニューを追加し、選択項目を2つ追加します。選択項目の選択によって呼び出されるプロシージャ内では、選択されたコントロールのキャプションにより処理を分岐しています。
’======1.メニューバーへオリジナルメニュー登録======

Sub AddControl()

Dim CBar As CommandBar
Dim CPop As CommandBarPopup
Dim CBCtrl1 As CommandBarButton
Dim CBCtrl2 As CommandBarComboBox

Set CBar = Application.CommandBars("Worksheet Menu Bar")
CBar.Reset '初期化

'ワークシートメニューバーへのコントロール追加(PopUp)
Set CPop = CBar.Controls.Add(msoControlPopup, temporary:=True)
With CPop
.Caption = "オリジナルメニュー"

'ポップアップメニューへのコントロール追加
Set CBCtrl1 = .Controls.Add(msoControlButton, temporary:=True)
CBCtrl1.OnAction = "MyProc"
CBCtrl1.Caption = "テスト1"

Set CBCtrl2 = .Controls.Add(msoControlComboBox, temporary:=True)
With CBCtrl2 'コンボボックス
.OnAction = "MyProc"
.Caption = "テスト2"
.AddItem "TEST1"
.AddItem "TEST2"
.AddItem "TEST3"
.ListIndex = 0
.Width = 100
.DropDownWidth = 50
End With

End With

End Sub

’======オリジナルメニューに登録されるプロシージャ======

Sub MyProc()

Dim Msg As String

With Application.CommandBars.ActionControl
'テスト用のメニューで選択したコントロールのIndexから
'分岐処理。
Select Case .Caption
    Case "テスト1"
        Msg = "1番目の項目"
    Case "テスト2"
        Msg = .Text 'コンボボックスのテキストを取得
        .ListIndex = 0 'コンボボックスのListIndex初期化
End Select

End With

MsgBox Msg

End Sub