即効テクニック |
サンプルではメニューバーにポップアップメニューを追加し、選択項目を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