Excelのコンテキストメニュー(右クリックメニュー)に独自のメニューを追加する。

Cassiopeia2007-05-07

前回の予告通り、セルを右クリックした時に現れるメニューへ独自メニューを追加するVBAサンプルコードです。
■使用上の注意
RemoveCellMenu()で追加したメニューを削除しないと、どんどん同じメニューが追加されてしまいます。 あなたが実際に使うマクロを創るときには追加したメニューを自動的に削除してから終了するようにするなり、すでに独自メニューがあるときはさらに独自メニューを追加しないようなコードを追加してください。

'AddCellMenu()で独自のメニューをコンテキストメニュー
'(右クリックメニュー)に追加する。
'RemoveCellMenu()で追加したメニューを削除する。


Sub AddCellMenu()
    Dim MyCellMenu As CommandBarControl
    
    Application.CommandBars("Cell").Controls.Item("切り取り(&T)").BeginGroup = True
    '区切り線を追加しています。

    Set MyCellMenu_01 = CommandBars("Cell"). _
    Controls.Add(Type:=msoControlButton, before:=1)
    
    With MyCellMenu_01
        .Caption = "電卓起動!"
        .FaceId = 50
        .OnAction = "ExecCalc"
    End With
    
    Set MyCellMenu_02 = CommandBars("Cell"). _
    Controls.Add(Type:=msoControlButton, before:=1)
    
    With MyCellMenu_02
        .Caption = "数字だったら2倍する!"
        .FaceId = 102
        .OnAction = "NumW"
    End With
    
End Sub

Sub RemoveCellMenu()
    CommandBars("Cell").Controls.Item("電卓起動!").Delete
    CommandBars("Cell").Controls.Item("数字だったら2倍する!").Delete
    CommandBars("Cell").Controls("切り取り(&T)").BeginGroup = False
End Sub

Sub ExecCalc()
    Shell "calc"
End Sub

Sub NumW()
    If IsNumeric(ActiveCell.Value) Then
        ActiveCell.Value = ActiveCell.Value * 2
    Else
        'zzz...
    End If
End Sub