• ベストアンサー

エクセルの右クリックメニューを減らしたい・・・

エクセルの右クリックメニューで必要のない機能を非表示にしたいのですが可能でしょうか? 具体的には (1)数式と値のクリア (2)ドロップダウンリストから選択 (3)ウォッチ式の追加 などです。マクロで出来れば自由度があって最適なのですが。 よろしくお願いします(ponta_024)

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。 他のメニューもIf文に追加すれば表示/非表示がコントロールできます。 ただし、If文の文法に沿って書かないといけないので、たとえば以下のようになります。 If InStr(1, menu.Item(i).Caption, "数式と値のクリア") > 0 Or _   InStr(1, menu.Item(i).Caption, "ハイパーリンク") > 0 Or _   InStr(1, menu.Item(i).Caption, "形式を選択して") > 0 Or _   InStr(1, menu.Item(i).Caption, "リストから選択") > 0 Then    menu.Item(i).Visible = False End If のように、間にIfの行とThenの行の間に、 InStr(1, menu.Item(i).Caption, "○○○") > 0 Or _ という形で挿入してください。 上の例を見ておわかりのように、○○○はメニューの文字列全部でなく、一部でもかまいません。

ponta_024
質問者

お礼

ありがとうございます。念のため文字列全部入れてみました。 完全に「表示・非表示」の制御ができました。非表示では薄青色の正方形しか出てきません。 このあと消えたメニュー部分にマクロの登録ができるか実験してみたいと思います。     If InStr(1, menu.Item(i).Caption, "切り取り") > 0 Or _      InStr(1, menu.Item(i).Caption, "コピー") > 0 Or _      InStr(1, menu.Item(i).Caption, "貼り付け") > 0 Or _      InStr(1, menu.Item(i).Caption, "形式を選択して貼り付け") > 0 Or _      InStr(1, menu.Item(i).Caption, "挿入") > 0 Or _      InStr(1, menu.Item(i).Caption, "削除") > 0 Or _      InStr(1, menu.Item(i).Caption, "数式と値のクリア") > 0 Or _      InStr(1, menu.Item(i).Caption, "コメントの挿入") > 0 Or _      InStr(1, menu.Item(i).Caption, "セルの書式設定") > 0 Or _      InStr(1, menu.Item(i).Caption, "ドロップダウン リストから選択") > 0 Or _      InStr(1, menu.Item(i).Caption, "ウォッチ式の追加") > 0 Or _      InStr(1, menu.Item(i).Caption, "リストの作成") > 0 Or _      InStr(1, menu.Item(i).Caption, "ハイパーリンク") > 0 Or _      InStr(1, menu.Item(i).Caption, "リサーチ") > 0 Then

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

(3)はわかりませんでしたが、(1)と(2)はこんな感じでしょうか。 Sub HideContextMenu()   Dim menu As CommandBarControls, i As Integer   Set menu = Application.CommandBars("Cell").Controls   For i = 1 To menu.Count     If InStr(1, menu.Item(i).Caption, "数式と値のクリア") > 0 Or _      InStr(1, menu.Item(i).Caption, "リストから選択") > 0 Then       menu.Item(i).Visible = False     End If   Next End Sub Sub ShowContextMenu()   Dim menu As CommandBarControls, i As Integer   Set menu = Application.CommandBars("Cell").Controls   For i = 1 To menu.Count     If InStr(1, menu.Item(i).Caption, "数式と値のクリア") > 0 Or _      InStr(1, menu.Item(i).Caption, "リストから選択") > 0 Then       menu.Item(i).Visible = True     End If   Next End Sub

ponta_024
質問者

お礼

ham_kamo様 毎回ありがとうございます。順調に動作しました。 If InStr(1, menu.Item(i).Caption, "数式と値のクリア") > 0 Or _ InStr(1, menu.Item(i).Caption, "○○○") > 0 Then InStr(1, menu.Item(i).Caption, "○○○") > 0 Then InStr(1, menu.Item(i).Caption, "○○○") > 0 Then ところで上記の「○○○」の部分に他のメニュー名を入れて 単純に命令を増設しても良いものでしょうか? 時間のあるときで結構ですので教えてください(ponta)

すると、全ての回答が全文表示されます。

関連するQ&A