- ベストアンサー
エクセル VBA で行の右クリックメニューから行の挿入削除を無効にしたい
お世話になります。 右クリックメニューの行の挿入と削除を無効にしたいのですが、 セルを選択して、右クリックメニューの挿入・削除は Private Sub Workbook_Open() Dim mymenubar1 As CommandBar Set mymenubar1 = Application.CommandBars("Cell") mymenubar1.Controls("挿入(&I)").Enabled = False End Sub で無効にできたのですが、 行を選択→右クリックメニューの挿入削除の無効化の仕方がわかりません。 ※セルに対してではなく、行に対して行いたいのです。 ご教授頂ければと幸いですのでよろしくお願いします。
- みんなの回答 (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)
すみませんでした。 削除もですね。 CommandBars("Row").Controls("削除(&D)...").Enabled = False CommandBars("Row").Controls("削除(&D)...").Enabled = True でできるようです。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 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