• ベストアンサー

エクセル VBA で行の右クリックメニューから行の挿入削除を無効にしたい

お世話になります。 右クリックメニューの行の挿入と削除を無効にしたいのですが、 セルを選択して、右クリックメニューの挿入・削除は Private Sub Workbook_Open() Dim mymenubar1 As CommandBar Set mymenubar1 = Application.CommandBars("Cell") mymenubar1.Controls("挿入(&I)").Enabled = False End Sub で無効にできたのですが、 行を選択→右クリックメニューの挿入削除の無効化の仕方がわかりません。 ※セルに対してではなく、行に対して行いたいのです。 ご教授頂ければと幸いですのでよろしくお願いします。

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

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

#1 の回答者です。読み落としましたので、書き加えました。 ただ、再度書きますが、Excel 2003以上には不要です。 また、これは、クラスインスタンスに設けることも多いです。 これは、右クリックメニュー(Cell)だけでなく、メニューの中も含めます。 サブルーチンを入れ替えてください。 Private Sub InsertEnabled(flg As Boolean) With Application  .CommandBars.FindControl(, 296).Enabled = flg  .CommandBars.FindControl(, 293).Enabled = flg  .CommandBars("Worksheet Menu Bar").FindControl(, 30003). _         Controls("削除(&D)...").Enabled = flg  .CommandBars("Row").FindControl(, 3183).Enabled = flg  .CommandBars("Cell").FindControl(, 3181).Enabled = flg End With End Sub 本来は、2バイト文字を使いたくはないのですが、どうしてもできない部分があります。

その他の回答 (3)

noname#89471
noname#89471
回答No.3

すみませんでした。 削除もですね。 CommandBars("Row").Controls("削除(&D)...").Enabled = False CommandBars("Row").Controls("削除(&D)...").Enabled = True でできるようです。

noname#89471
noname#89471
回答No.2

こんにちは。 必要な部分だけですが...以下のマクロで、一応できました。 これでよいのでしょうか? Sub 行選択挿入_false() CommandBars("Row").Controls("挿入(&I)").Enabled = False End Sub Sub 行選択挿入_true() CommandBars("Row").Controls("挿入(&I)").Enabled = True End Sub もっとよい方法があるかもしれませんので、以後の回答をご参考にしてください。

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

こんばんは。 Excel 2003 以上なら、シートの保護で、行の挿入にチェックを入れればよいはずです。 マクロなら、以下のようにすればよいです。 ThisWorkbook モジュールに置けばよいです。 Private Sub Workbook_Open()  InsertEnabled False End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)  InsertEnabled True End Sub Private Sub InsertEnabled(flg As Boolean) With Application  .CommandBars.FindControl(, 296).Enabled = flg  .CommandBars("Row").FindControl(, 3183).Enabled = flg  .CommandBars("Cell").FindControl(, 3181).Enabled = flg End With End Sub

関連するQ&A