VBA 右クリックメニューに文字追加し、列ごとに表示を変えたい ### 発生している問題・エラーメッセージ 通常メニューの表示がおかしくなってしまう ### 該当のソースコード ```ここに言語を入力 ```VBA Dim cmdBra1 As CommandBarControl, cmdBra2 As CommandBarControl Dim cmdBra3 As CommandBarControl, cmdBra4 As CommandBarControl Dim cmdBra5 As CommandBarControl, cmdBra6 As CommandBarControl Dim cmdBra7 As CommandBarControl, cmdBra8 As CommandBarControl Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then '以下で、新規のメニューを追加 Set cmdBra1 = Application.CommandBars("Cell").Controls.Add(Before:=1, Type:=msoControlPopup) With cmdBra1 .Caption = "▽野菜▽" 'グループメニュー名 End With Set cmdBra2 = cmdBra1.Controls.Add() With cmdBra2 .Caption = "胡瓜" 'メニュー表示名 .FaceId = 2 .OnAction = "胡瓜" '実行するマクロ名 End With Set cmdBra2 = cmdBra1.Controls.Add() With cmdBra2 .Caption = "白菜" .FaceId = 2 .OnAction = "白菜" End With Set cmdBra2 = cmdBra1.Controls.Add() With cmdBra2 .Caption = "キャベツ" .FaceId = 2 .OnAction = "キャベツ" End With End If If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then Set cmdBra3 = Application.CommandBars("Cell").Controls.Add(Before:=1, Type:=msoControlPopup) With cmdBra3 .Caption = "▽果物▽" End With Set cmdBra4 = cmdBra3.Controls.Add() With cmdBra4 .Caption = "苺" .FaceId = 2 .OnAction = "苺" End With Set cmdBra4 = cmdBra3.Controls.Add() With cmdBra4 .Caption = "リンゴ" .FaceId = 2 .OnAction = "リンゴ" End With Set cmdBra4 = cmdBra3.Controls.Add() With cmdBra4 .Caption = "バナナ" .FaceId = 2 .OnAction = "バナナ" End With End If If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then Set cmdBra5 = Application.CommandBars("Cell").Controls.Add(Before:=1, Type:=msoControlPopup) With cmdBra5 .Caption = "▽精肉▽" End With Set cmdBra6 = cmdBra5.Controls.Add() With cmdBra6 .Caption = "豚肉" .FaceId = 2 .OnAction = "豚肉" End With Set cmdBra6 = cmdBra5.Controls.Add() With cmdBra6 .Caption = "牛肉" .FaceId = 2 .OnAction = "牛肉" End With Set cmdBra6 = cmdBra5.Controls.Add() With cmdBra6 .Caption = "鶏肉" .FaceId = 2 .OnAction = "鶏肉" End With Set cmdBra7 = Application.CommandBars("Cell").Controls.Add(Before:=2, Type:=msoControlPopup) With cmdBra7 .Caption = "▼鮮魚▼" End With Set cmdBra8 = cmdBra7.Controls.Add() With cmdBra8 .Caption = "鮭" .FaceId = 2 .OnAction = "鮭" End With Set cmdBra8 = cmdBra7.Controls.Add() With cmdBra8 .Caption = "鯖" .FaceId = 2 .OnAction = "鯖" End With Set cmdBra8 = cmdBra7.Controls.Add() With cmdBra8 .Caption = "秋刀魚" .FaceId = 2 .OnAction = "秋刀魚" End With End If Application.CommandBars("Cell").ShowPopup Application.CommandBars("Cell").Reset Cancel = True End Sub```
Dim cmdBar As CommandBar, cmdBarc1 As CommandBarControl Dim cmdBarc2 As CommandBarControl Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect(Target, Range("I:I")) Is Nothing Then Set cmdBar = Application.CommandBars("Cell") Set cmdBarc1 = cmdBar.Controls.Add(Before:=1, Type:=msoControlPopup) With cmdBarc1 .Caption = "▽野菜▽" With .Controls.Add .Caption = "胡瓜" .OnAction = "胡瓜" End With With .Controls.Add .Caption = "白菜" .OnAction = "白菜" End With End IF・・・以下同文`````` 上記のVBAだとEnd Ifが不要とのエラーになり、最初の「野菜」メニューしか表示されません
試したこと
形式選択貼り付けが表示されず、複合表として貼り付けになってしまうのは何故か
検索してみましたが、通常メニューを削除する方法しかみつかりませんでした。
上記コードに、値貼り付け・数式貼り付け等を追加し、実行マクロに書き込んでみましたが
右クリック時に表示も出てきません。
補足情報(FW/ツールのバージョンなど)
Excel 2016を使用しております。
長文で分かりにくく、大変申し訳ありません。
VBA初心者の為、色々な方の構文を流用させて頂きました。間違いだらけかと思いますが、教えて頂けると助かります。
宜しくお願い致します!!
質問を修正し、コード部分はコード挿入(<code>)の内側になるように記入して下さい。
コードは、Private Sub の行から End Sub までコピーして貼り付けてください。
貼り付けたコードをすべて選択して、ツールバーの <code> ボタンをクリックしてください。
コードが読みやすくなります。
すみません。Private Sub の行はありましたね。
コードブロックになっていないと読みづらいので、見逃しました。
<code>ボタンをクリックしました。質問の入力方法が分かってなくて、大変申し訳ございません。
ご指摘有難うございます。また何か駄目な箇所があれば教えて下さい。宜しくお願いします。
コード部分はコード挿入(<code>)の内側になるように
コード部分を選択してから <code> をクリックするか、
クリックで挿入された「ここに言語を入力」の部分にコードをコピーしてください。
丁寧に教えて頂き、有難うございます。こちらで大丈夫でしょうか??
'''の中に入れれば良いのでしょうか? 本当にすみません。。
```VBA
Dim cmdBra1 As CommandBarControl, cmdBra2 As CommandBarControl
~
End Sub
```
のようにします。
何度も申し訳ありません。有難うございます。
'''の中に入れましたが、改行は必要ないのでしょうか? 1スペースを入れて続けてコピーした方が良いのでしょうか? 基本部分でご迷惑をお掛けまします
2個目は、まあまあ大丈夫じゃないでしょうか。
1個目も同様に。
改行とかは見栄えの話ですから、プレビュー見ながら調整して下さい。
マークダウンされていないとインデントが無く見辛いのです。
マークダウンされているとインデントは生きていますし、簡単にコピー出来て再現させやすいのです。
回答するかどうかするかどうかの、モチベーションに関わってきますので。
修正遅くなり、申し訳ありません。マークダウンをググって修正してみましたが2個目みたいに色は付けられませんでした。すみません
何とかマークダウン?できたようです。宜しくお願い致します。
1個目はインデントされていないのでしょうか?
すみません。先ほど気づきまして、インデントしました。他に見づらい点があれば言って下さい。
宜しくお願い致します。不慣れなもので申し訳ございません。
回答1件
あなたの回答
tips
プレビュー