重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

エクセル2003や2007でセル上で右クリックしたときに、
表示されるインスタントメニューで、切り取り(T) をグレー表示にして選択できないようなマクロを次のようにしてあります。
同様に、コピー(C)、貼り付け(P)、形式を選択して貼り付け(S)もグレー表示にして選択できないようにしたいと思います。
マクロ記述を教えてください。よろしくお願いします。

Sub MenuOff()
Dim CBar
Set CBar = Application.CommandBars("Cell").Controls
With CBar
For i = 1 To .Count
If (.Item(i).Caption Like "切り取り*") Then
.Item(i).Enabled = False
Exit For
End If
Next i
End With
End Sub

A 回答 (3件)

ごめんなさい寝ぼけていて「形式を選択して貼り付け」を忘れていました。


あと、Exit For は それほど必要性を感じなかったのではずしました。

Sub MenuOff()
  Dim CBar
  Set CBar = Application.CommandBars("Cell").Controls
  With CBar
    For i = 1 To .Count
      If (.Item(i).Caption Like "切り取り*") Then
        .Item(i).Enabled = False
      ElseIf (.Item(i).Caption Like "コピー*") Then
        .Item(i).Enabled = False
      ElseIf (.Item(i).Caption Like "貼り付け*") Then
        .Item(i).Enabled = False
      ElseIf (.Item(i).Caption Like "形式を選択して貼り付け*") Then
        .Item(i).Enabled = False
      End If
    Next i
  End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。どうも2007では右クリックメニューは、VBAでカスタマイズできないようです。

お礼日時:2010/01/27 10:28

こんにちは。



すでに回答がついていますが、広範囲のメニューを探す場合には、ループが必要ですが、ひとつのメニューでは、IDで、プロパティを変えていけばよいと思います。

'-------------------------------------------
'標準モジュールが良い
Sub Main()
  ControlAvailable False '戻す時は、True を指定
End Sub

Sub ControlAvailable(flg As Boolean)
 With Application.CommandBars("Cell")
   .FindControl(, 19).Enabled = flg 'コピー
   .FindControl(, 21).Enabled = flg '切り取り
   .FindControl(, 22).Enabled = flg '貼付け
   .FindControl(, 755).Enabled = flg '形式を選択-貼付け
 End With
End Sub
'----------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございました。どうも2007では右クリックメニューは、VBAでカスタマイズできないようです。

お礼日時:2010/01/27 10:28

こんなもんでどうでしょうか?




Sub MenuOff()
  Dim CBar
  Set CBar = Application.CommandBars("Cell").Controls
  With CBar
    For i = 1 To .Count
      If (.Item(i).Caption Like "切り取り*") Then
        .Item(i).Enabled = False
      ElseIf (.Item(i).Caption Like "コピー*") Then
        .Item(i).Enabled = False
      ElseIf (.Item(i).Caption Like "貼り付け*") Then
        .Item(i).Enabled = False
        Exit For
      End If
    Next i
  End With
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!