• ベストアンサー

マクロ(メニュー選択できないような)を教えてください。

エクセル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

質問者が選んだベストアンサー

  • ベストアンサー
noname#130090
noname#130090
回答No.2

ごめんなさい寝ぼけていて「形式を選択して貼り付け」を忘れていました。 あと、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

mszjmszj
質問者

お礼

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

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 すでに回答がついていますが、広範囲のメニューを探す場合には、ループが必要ですが、ひとつのメニューでは、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 '----------------------------------------

mszjmszj
質問者

お礼

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

noname#130090
noname#130090
回答No.1

こんなもんでどうでしょうか? 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

関連するQ&A