← コード一覧へ戻る
実務メニュー

実行されたメニュー項目をTagで判定する

2つの項目のどちらを選んだかをTagの値で確認できます。 ActionControlはクリックされたコントロールです。表示名ではなくTagで用途を区別します。

実行前に確認

  • CommandBarsは旧式のメニューAPIです。リボンのタブを追加するコードではありません。
  • 既存のセル右クリックメニューは変更せず、独立した一時メニューを表示します。Escで閉じられます。
  • 表示終了後は自作メニューを削除します。実行を強制停止した場合でもTemporary=TrueによりExcel終了時に消えます。
  • 組み込みアイコンや表示はOfficeの版によって異なる場合があります。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Sub ShowPracticeMenu5505()
    Dim menu As Office.CommandBar
    Dim button As Office.CommandBarButton
    Dim second As Office.CommandBarButton
    Dim subMenu As Office.CommandBarPopup
    On Error GoTo Failed
    Set menu = Application.CommandBars.Add(Position:=msoBarPopup, Temporary:=True)
    Set button = menu.Controls.Add(Type:=msoControlButton, Temporary:=True)
    button.Caption = "確認メッセージ"
    button.Tag = "LabPractice5505"
    button.OnAction = "'" & Replace(ThisWorkbook.Name, "'", "''") & "'!PracticeAction5505"
    Set second = menu.Controls.Add(Type:=msoControlButton, Temporary:=True)
    second.Caption = "別の確認"
    second.Tag = "Second"
    second.OnAction = button.OnAction
    menu.ShowPopup
CleanUp:
    On Error Resume Next
    If Not menu Is Nothing Then menu.Delete
    On Error GoTo 0
    Exit Sub
Failed:
    MsgBox Err.Description, vbExclamation
    Resume CleanUp
End Sub

Public Sub PracticeAction5505()
    Dim clicked As Office.CommandBarControl
    Set clicked = Application.CommandBars.ActionControl
    If clicked Is Nothing Then
        MsgBox "メニューから選択してください"
        Exit Sub
    End If
    MsgBox "選択した項目: " & clicked.Tag
End Sub

図で見るメニュー操作の流れ

イメージ図

既存メニューを変更しない練習例です。

  1. 作成

    独立した一時ポップアップを作る

  2. 選択

    2つの項目のどちらを選んだかをTagの値で確認できます。

  3. 終了

    表示後に自作メニューを片付ける

ActionControlはクリックされたコントロールです。表示名ではなくTagで用途を区別します。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版Excelの練習用.xlsmを開き、すべてのコードを同じ標準モジュールへ貼り付けます。

  2. 2

    ShowPracticeMenu5505を実行し、表示されたポップアップの項目を選びます。

  3. 3

    ActionControlはクリックされたコントロールです。表示名ではなくTagで用途を区別します。

  4. 4

    2つの項目のどちらを選んだかをTagの値で確認できます。

使っている機能の公式ドキュメント(Microsoft Learn)