• ベストアンサー

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

  • VBA を使用してexcel起動時に 右クリックメニューの行削除や列削除を無効にしようとするとエラーが出ることがある。

    お世話になります。 VBA を使用してexcel起動時に 右クリックメニューの行削除や列削除を無効して、下記VBAを作成しました。 しかしながら、起動時(実行時)に 「実行時エラー 5 プロシージャの呼び出し、または引数が不正です。」が出ることがあります。 でないときもあるのですが、 デバック時にとまるところは、毎回変わり(1)~(5)のどれかで止まります。 使用したい環境はexcel2007,excel2003で正常に動くようにしたいのですが、何卒よろしくお願いします。 *************ソース********************* 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 (1) Application.CommandBars("Worksheet Menu Bar").Controls("挿入(&I)").Enabled = flg (2) Application.CommandBars("Cell").Controls("挿入(&I)...").Enabled = flg (3)Application.CommandBars("Cell").Controls("削除(&D)...").Enabled = flg (4)Application.CommandBars("Row").Controls("挿入(&I)").Enabled = flg (5)Application.CommandBars("Row").Controls("削除(&D)").Enabled = flg .CommandBars.FindControl(, 296).Enabled = flg .CommandBars.FindControl(, 293).Enabled = flg End With End Sub

  • Excelで右クリック禁止が出来ない?

    Excel2010 を使用しています。 設定した範囲(1~10行)のセルを右クリックしたときに出るショートカットメニューを表示しない様な設定にしたく、  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Dim myRowTop As Long , myRowBottom As Long   myRowTop = 1   myRowBottom = 10   If ActiveCell.Row >= myRowTop And ActiveCell.Row <= myRowBottom Then    Application.CommandBars("Cell").Enabled = False   Else    Application.CommandBars("Cell").Enabled = True   End If  End Sub としました。 これで通常問題ないと思いますが、 A1 : F10 を「テーブルとして書式設定」し、この範囲のセルを右クリックしたとき、 ショートカットメニューが表示されてしまいます。 CommandBars([Index]) の Index が違うのかと思い、試してみましたが、直りませんでした。 どなたか詳しい方、どうか教えてください。 よろしくお願いします。

  • エクセルの右クリックが消えてしまいます。

    エクセルでVBAを使いメニューバー以外を全て非表示にしてたちあがるようにしたファイルがあります。しかし、そのファイルを立ち上げるといつもエクセルの右クリックが使えなくなります。エミディエィトウィンドゥに『CommandBars("Cell").Enabled = True』と入力し右クリックを使えるようにしているのですが、なにかほかの方法で毎回右クリックが消えないようにする方法はあるでしょうか?原因はツールバーを非表示にする事のようなのですが。。。どうしても解消できなくて困っています。よろしくお願いします。

  • Excelで追加した右クリックメニューが動かない

    Windows Vista Excel2007です。 Sheet1に、次のようにVBAでプログラミングしたのですが、 '------------------------------------------------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Application.CommandBars("Cell").Reset   With Application.CommandBars("Cell").Controls.Add()     .Caption = "テスト"     .OnAction = "test"   End With End Sub Public Sub test()   MsgBox "OK" End Sub '------------------------------------------------------------------------------- 右クリックメニューには追加できたのですが、その「テスト」メニューをクリックすると、 次のようなエラーダイアログが表示されます。 「マクロ'Book1!test'を実行できません。このブックでマクロが使用できないか、 またはすべてのマクロが無効になっている可能性があります。」 セキュリティセンターは「すべてのマクロを有効にする」に設定しており、他のマクロは正常に動作します。 どうしてエラーになるのか全く分かりません。 どなたか原因をご存知の方、ご教示をお願いします。

  • エクセルの右クリックメニューが変わってしまったのですが。

    エクセルのセルを指定して右クリックするとメニューの中に以前は「挿入」があったのですが、「行の挿入」に変わってしまいました。理由はなんでしょうか?またこれを戻すにはどうしたらよろしいでしょうか?

  • EXCELで右クリックメニューの追加

    EXCELで右クリックメニューを追加するにあたり、以下のコードをネットで取得しました。 右クリックメニューを階層化してさらに、いくつか選べるようにするにはどうしたら良いのでしょうか? ------------------------------------------------------------- Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "コマンド" .OnAction = "Sample_cmd" .BeginGroup = False End With Sub Sample_cmd() MsgBox Now End Sub ------------------------------------------------------------- 判る方お願いします。

  • エクセルの右クリックメニューで

    行などを選択し右クリックをすると出るメニューで、削除が薄い表示になり選択することができなくなりました。これは何故でしょうか? 詳しい方教えてください。

  • EXCEL VBA でマクロが作動するシートとしないシートがある。

    右クリックのショートカットメニューに作成したマクロを追加しました。その追加マクロを実行しても右クリックのショートカットに追加されないシートがあります。同じbookでもその他のシートでは、右クリックのショートカットメニューに追加されているものもあります。 なぜでしょうか? できないのは、右クリックのショートカットの表示です。目的の動作(下記の場合は、フォントの色を変える)は、どのシートでも作動します。 ちなみにプロシージャーは次のように書いています。PERSONAL.XLSに登録してあります。 宜しくお願いします。 'セルの右クリックショートカットメニューを作成 Sub 色々右クリック() 赤みぎクリック 黒みぎクリック 青みぎクリック End Sub Sub 赤みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "赤" .OnAction = "赤フォント" .BeginGroup = False End With End Sub Sub 赤フォント() Selection.Font.ColorIndex = 3 End Sub Sub 黒みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "黒" .OnAction = "黒フォント" .BeginGroup = False End With End Sub Sub 黒フォント() Selection.Font.ColorIndex = 1 End Sub Sub 青みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "青" .OnAction = "青フォント" .BeginGroup = False End With End Sub Sub 青フォント() Selection.Font.ColorIndex = 5 End Sub Sub Reset_RightClick() Dim rightBar As CommandBar Application.CommandBars("cell").Reset End Sub

  • Excelシート上で右クリックができない

    Excelのシート上で右クリックをしても、ショートカットメニューが 表示されなくなってしまいました。 気になる点としては、下記のようなコードを記述し、ショートカット メニューを削除したことがあるのですが、影響はありますでしょうか? Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) For Each num In Application.CommandBars("Cell").Controls num.Delete Next End Sub 現在は、下記のようにしていますが、状況は変わりません。 ちなみに、下記コートをすべて削除しても状況は変わりません。 ブックを新規作成しても、表示されません。 シートの保護はしていません。 Windowsのデスクトップなどではショートカットメニュは表示されます。 VBE上でも表示されます。 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Application.CommandBars("Cell").Reset End Sub 以上、よろしくお願いします。

  • EXCEL VBA:シートの右クリックメニューへの追加方法

    (1)EXCEL VBAで、シートの右クリックメニューへの追加方法が下記の通り、ある本に載っていたので試してみましたが、うまく動作しません。 どこが間違っているか教えて下さい。  Sub シートの右クリックメニュー追加()  With CommandBars("Ply").Controls.Add  .Caption = "AAA(メニューの表示文字)"  .OnAction = "BBB(実行するマクロ名)"  .BeginGroup = True  End With  End Sub (2)上記「シートの右クリックメニュー追加」+BBBマクロをアドインへ組み込み、皆さんへ配布して、右クリックメニューで動作させたいのですが、やり方を教えて下さい。 宜しく、お願いします。

専門家に質問してみよう