アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

右クリックメニューの行の挿入と削除を無効にしたいのですが、
セルを選択して、右クリックメニューの挿入・削除は

Private Sub Workbook_Open()
Dim mymenubar1 As CommandBar
Set mymenubar1 = Application.CommandBars("Cell")
mymenubar1.Controls("挿入(&I)").Enabled = False
End Sub

で無効にできたのですが、
行を選択→右クリックメニューの挿入削除の無効化の仕方がわかりません。
※セルに対してではなく、行に対して行いたいのです。

ご教授頂ければと幸いですのでよろしくお願いします。

A 回答 (4件)

こんばんは。



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
    • good
    • 1

こんにちは。



必要な部分だけですが...以下のマクロで、一応できました。
これでよいのでしょうか?

Sub 行選択挿入_false()
CommandBars("Row").Controls("挿入(&I)").Enabled = False
End Sub

Sub 行選択挿入_true()
CommandBars("Row").Controls("挿入(&I)").Enabled = True
End Sub

もっとよい方法があるかもしれませんので、以後の回答をご参考にしてください。
「エクセル VBA で行の右クリックメニュ」の回答画像2
    • good
    • 0

すみませんでした。


削除もですね。

CommandBars("Row").Controls("削除(&D)...").Enabled = False
CommandBars("Row").Controls("削除(&D)...").Enabled = True

でできるようです。
    • good
    • 0

#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バイト文字を使いたくはないのですが、どうしてもできない部分があります。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています