セルの右クリックメニューにコマンドを追加する

ワークシートのセル上で右クリックするとメニューが出ますが、これに1つコマンドを追加してみましょう。ここでは、特定のワークシートでのみ追加されたメニューが出るようにしています。図の挿入のダイアログボックスが現れます。

ワークシートモジュール内に以下のプロシージャを記述します。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Delete_cbc
  With Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, _
                                                              before:=6, _
                                                              temporary:=True)
    .Caption = "ファイルから図の挿入"
    .OnAction = "Dialog_Pic"
    .Tag = "mycbc"
  End With
End Sub

Private Sub Worksheet_Deactivate()
  Delete_cbc
End Sub


標準モジュール内に以下のプロシージャを記述します。

Sub Delete_cbc()
  Dim cbc As CommandBarControl
  For Each cbc In Application.CommandBars("cell").Controls
    If cbc.Tag = "mycbc" Then cbc.Delete
  Next cbc
End Sub

Sub Dialog_Pic()
  Application.Dialogs(xlDialogInsertPicture).Show
End Sub

よく使うコマンドはこのようにして登録しておけば楽になります。