|
右クリックした時のコンテキストメニューは、その右クリックした場所によって
いろいろバリエーションがあると思いますが、
おっしゃっているのはセル上における右クリックなんでしょうね。
また、専用のメニューで表示したいのは、自ブック上のセルだけで、
よそのブックでは標準のままとしたいというのがお望みでしょうか?
であれば、標準のものはそのままにしておき、
SheetBeforeRightClickイベントで表示させるコンテキストメニューを
自前のものを出して、標準のものは出さないようにCancelさせるのがいいと思います。
ブックモジュールに以下記述。
Option Explicit
Private myCmdBar As Office.CommandBar
Private Sub Workbook_BeforeClose(Cancel As Boolean)
CmdBarDelete
End Sub
Private Sub CmdBarMake()
Dim myCtrl As Office.CommandBarControl
Dim NewCtrl As Office.CommandBarControl
Dim cnt As Long
If myCmdbarExists Then Exit Sub
Set myCmdBar = Application.CommandBars.Add(, msoBarPopup, , True)
For Each myCtrl In Application.CommandBars("Cell").Controls
cnt = cnt + 1
If cnt > 6 Then Exit For
Set NewCtrl = myCtrl.Copy(myCmdBar)
NewCtrl.Tag = Me.Name & "Cell"
Next
End Sub
Private Sub CmdBarDelete()
If myCmdbarExists Then
myCmdBar.Delete
Set myCmdBar = Nothing
End If
End Sub
Private Property Get myCmdbarExists() As Boolean
Dim dmy As Object
If myCmdBar Is Nothing Then
Set dmy = Application.CommandBars.FindControl(Tag:=Me.Name & "Cell")
If Not dmy Is Nothing Then
Set myCmdBar = dmy.Parent
myCmdbarExists = True
End If
Else
myCmdbarExists = True
End If
End Property
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Target.Rows.Count = Sh.Rows.Count Then Exit Sub
If Target.Columns.Count = Sh.Columns.Count Then Exit Sub
If myCmdBar Is Nothing Then CmdBarMake
myCmdBar.ShowPopup
Cancel = True
End Sub
(注意点)
なお、使っては困るコマンドボタンが何か不明でしたので、
この例示では、標準のコマンドバー"Cell"にあるコントロールの内、
自前のメニューへは、頭から6個分のコマンドを使ってもいいものとしコピーして、
それ以降のものを不可のものとして除外しました。
なので、その考慮は専用のコマンドバーを作成するCmdBarMakeを
カスタマイズしてください。
なお、よちよちさんとタッちゃんさんを同一人と判断し回答してます。
|
|