• 締切済み

ExeclVBAユーザーフォームから右クリックでショートカットメニューで困っています。

ExcelVBAのユーザーフォーム上で、テキストなどを編集する際に右クリックしてコピー&ペーストとかのショートカットメニューを出したいんでけど、出せないものなのでしょうか?書籍などにはワークシート上で自作の右クリックのショートカットマクロを割り付ける、というTipsが掲載されていますが、参考にコードを書いてもうまくいきません。

みんなの回答

回答No.4

NO1です。 ユーザーフォーム上ですね。 失礼しました。 サンプルは、ワークシート上です。 無視してください。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 Userform1 に Textbox1 を配置し、以下のコードをそれぞれコメントにある モジュールにコピペして下さい。 右クリックは「MouseUp」イベントで検知できます。 とりあえず、コピー&ペーストを簡単...と言うかかなり手抜きですが、 実装してみました。例外処理は最小限しかしてません。 ' // Userform1 ------------------------------------------------------ Private Const MENUNAME As String = "RIGHT_CLICK_MENU" Private mCB As CommandBar Private Sub UserForm_Initialize()   Call CreatePopupMenu End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)   Call DeletePopupMenu End Sub ' // 右クリックメニュー作成 Private Sub CreatePopupMenu()      Call DeletePopupMenu   Set mCB = Application.CommandBars _        .Add(Name:=MENUNAME, _          Position:=msoBarPopup, _          MenuBar:=False, _          Temporary:=True)   With mCB.Controls.Add(Type:=msoControlButton)     .Caption = "コピー(&C)"     .OnAction = "CopyText"     .FaceId = 19   End With   With mCB.Controls.Add(Type:=msoControlButton)     .Caption = "貼り付け(&V)"     .OnAction = "PasteText"     .FaceId = 22   End With End Sub ' // 右クリックメニュー削除 Private Sub DeletePopupMenu()   On Error Resume Next   Application.CommandBars(MENUNAME).Delete   Set mCB = Nothing   On Error GoTo 0 End Sub '// Textbox1 の右クリックで PopupMenu を呼び出し Private Sub TextBox1_MouseUp(ByVal Button As Integer, _                ByVal Shift As Integer, _                ByVal X As Single, _                ByVal Y As Single)   If Button = xlSecondaryButton Then     mCB.ShowPopup   End If End Sub ' // 標準モジュール ------------------------------------------------- ' // かなり手抜きです。この方法は必ずうまくいくとは限りません。 ' // コピーコマンド Sub CopyText()   On Error Resume Next   AppActivate (UserForm1.Caption)   If Err.Number = 0 Then SendKeys "^c", True End Sub '// ペーストコマンド Sub PasteText()   On Error Resume Next   AppActivate (UserForm1.Caption)   If Err.Number = 0 Then SendKeys "^v", True End Sub

headaqe
質問者

お礼

スゲエ。こんなのがやりたかったんです。大変ありがとう御座いました。

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

こんにちは。 Excel VBAのUserFormのテキストボックスなどには、右クリックイベント自体はありますが、UserForm上の右クリックメニューは用意できないと思います。

回答No.1

ワークブックをオープンした時に右クリックのメニューをセット 閉じる時にメニューをクリアするサンプルです。 ThisWorkbookに貼り付けて使います。 Private Sub Workbook_Open() Dim Newb As Variant Set Newb = Application.CommandBars("Cell").Controls.Add(Temporary:=True, before:=1) With Newb .Caption = "転送ファイル作成" .OnAction = "転送ファイル作成" .BeginGroup = True .FaceId = 283 End With Set Newb = Application.CommandBars("Cell").Controls.Add(Temporary:=True, before:=1) With Newb .Caption = "月次更新" .OnAction = "GetujiKosin" .BeginGroup = True .FaceId = 1015 End With Set Newb = Application.CommandBars("Cell").Controls.Add(Temporary:=True, before:=1) With Newb .Caption = "個別明細書印刷" .OnAction = "KOPRINT" .BeginGroup = False .FaceId = 4 End With Set Newb = Application.CommandBars("Cell").Controls.Add(Temporary:=True, before:=1) With Newb .Caption = "総括明細書印刷" .OnAction = "PPRINT" .BeginGroup = True .FaceId = 4 End With Set Newb = Application.CommandBars("Cell").Controls.Add(Temporary:=True, before:=1) With Newb .Caption = "受信データー変換" .OnAction = "Import" .BeginGroup = True .FaceId = 4 End With End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Err.Clear Do Application.CommandBars("cell").Controls("総括明細書印刷").Delete Loop While Err.Number = 0 Err.Clear Do Application.CommandBars("cell").Controls("個別明細書印刷").Delete Loop While Err.Number = 0 Err.Clear Do Application.CommandBars("cell").Controls("月次更新").Delete Loop While Err.Number = 0 Err.Clear Do Application.CommandBars("cell").Controls("転送ファイル作成").Delete Loop While Err.Number = 0 Err.Clear Do Application.CommandBars("cell").Controls("受信データー変換").Delete Loop While Err.Number = 0 End Sub

headaqe
質問者

補足

回答ありがとう御座います。早速試してみました。Excelワークシート上で右クリックをするとショートカットメニューが出るのですが、 作成したユーザーフォーム上では出ませんでした。 Application.CommandBarsの引数が"Cell"になっているのは、ワークシート上だからと思い、引数を"UserForm"などに変えてみてもエラーなってしまい、うまくいきません。なにか有効なパラメータとか、そうでないものがあるのでしょうか?

関連するQ&A

  • 右クリックメニュー

    ショートカットアイコンからの右クリックメニューの中に同じ項目が2つできてしまいました。 ショートカットアイコンの右クリックメニューを整理するには レジストリのどのキーから編集するのでしょうか? また、ファイル→右クリックメニュー、フォルダ→右クリックメニューは正常にメニューが表示されます。 同じ項目が出てしまうのは ショートカットアイコンからの右クリックメニューのみです。 どうかよろしくお願いします。

  • デスクトップを右クリックしたときに出るショートカットメニューに変なものが!?

    Windows2000 です。 デスクトップを右クリックしたときに出る ショートカットメニューに変な空白ができてしまいました。 具体的には、新規作成とかの下の方に 空白があって、→矢印があって、右に 移動できるけど、そこも全部空白で5行ぐらい あります。 試しに、選択してクリックしてみると 赤丸の中に×ボタンが出て、メッセージも空白でした。 おそらく、何かのソフトをインストールした時に、 右クリックショートカットメニューに登録しようとして 失敗(?)したものだと思われるのですが、 何かがわかりません。 (1)一体どのソフトなのか見極めたい。 (2)右クリックのショートカットメニューを 編集する方法。フリーソフトなど教えてください。 ※あくまで、デスクトップを右クリックしたときに 出るショートカットメニューです。 他のところで出るショートカットメニューでは ありません。

  • インターネットショートカットの右クリックメニュー

    Windows8.1です。 普段はFirefoxがメインなのですが、GoogleChromeもインストールしてあります。 お気に入りとかブックマークはあまり使わず、フォルダにまとめたインターネットショートカットをダブルクリックしてFirefoxで開いたり、開いているChromeのウインドウにドラッグしたりして使っています。 FirefoxにはAdblockが入っているためときどき開いてくれないサイトがあり、その場合はChromeで開くのですが、これがちょっと手間です。 インターネットショートカットの右クリックメニューに「Chromeで開く」などを追加できると便利なのですが、そういう設定ってできますでしょうか。 少し調べて HKEY_CLASSES_ROOT\*\shell\Chromeで開く\command の既定の値にChromeまでのフルパスを設定したのですが、テキストファイルやWordファイルの右クリックメニューには「Chromeで開く」が表示され、きちんと動作するのですが、インターネットショートカットの右クリックメニューには表示もされませんでした。

  • 右クリックのショートカットメニューの追加

    WORDやexcelの右クリックのショートカットメニューは便利な機能ですが、そこに自分で機能を追加するにはどのような操作をすればよいのでしょうか。 例えば、右クリックのショートカットメニューでプリンタを印刷を表示追加する。

  • Word2007 右クリックとアプリケーションキーのメニュー

    Word2007です。 Word2003までは 右クリックのショートカットメニューをアプリケーションキーで表示できるようになっていたと思いますが、今気がついたのですがWord2007では、右クリックショートカットメニューとアプリケーションキーのメニューは違います。 シニアにパソコンを教えており右クリックが苦手なシニアにアプリケーションきーを押すように教えてきたのですが2007では変わったのでしょうか 具体的には、テキストボックス内の文字列を均等割り付けをするため テキストボックス内での右クリックとアプリケーションキーのメニューが 画像のようになります。アプリケーションきーのメニューでは段落が表示されないのです。 2007を使う右クリックが苦手なシニアが増えているのですが困ってしまいます。 右クリックとアプリケーションのメニューを同じにすることはできないでしょうか

  • IEの右クリックメニュー

    インターネットエクスプローラ5.5の右クリックメニューのいらない項目(デフォルトの項目)を削除したいと思うのですが、どうすればよいのでしょうか。 SOFTを探しても、拡張したメニューの編集が出来る物はあるのですが、デフォルトのメニューを編集できるものは見当たりません。 レジストリをいじくらないと出来ないのでしょうか? できれば、SOFTで出来るとよいのですが… (わかりづらくてすみません。右クリックして出てくるショートカットの作成とか、エンコードとかの項目です。) ご存知の方、よろしくお願いします。

  • 右クリックのショートカットメニューについて

    自分でも分からないのですが、右クリックのショートカットメニューが使えなくなってしまいました。 オプションの基本設定は別のパソコンにって間違いがないのを確認しているのですが直し方が解りません。 教えてください御願いします。使用しているCADはAutoCAD Electrical 2009バージョンはC.711.0です。

  • 右クリックメニューの編集

    エクスプローラーで右クリックメニューの「新規作成」のサブに新たな項目を追加したいのではなく、 右クリックメニューの直下に「新規フォルダ作成」「新規テキスト作成」などを 追加するのはレジストリを編集すればできるでしょうか?

  • ショートカットメニューを右クリックではなくキー操作で出したい

    ショートカットメニューを、マウスの右クリックではなく、キー操作で出したいのです。 たとえば、エクスプローラ上で、新しいファイルを作るためにショートカットメニューを出す、Internet Explore上で、画像を保存するためにショートカットメニューを出す、といった場合です。 できるかどうかと、できるのであれば操作方法を教えて下さい。OSはWindows98です。

  • 右クリックしたときに表示されるメニューを追加したい。

    Windows XPを使用しています。 画面上の何もないところで右クリックすると、「新規作成」メニューが 出てきますが、うちのパソコンの「新規作成」メニューの中には 「WORD文章」や「EXCELワークシート」などはあるのですが、 「テキスト」メニューがありません。 今使っているテキストエディターを右クリックの新規作成メニューに 入れたいのですが、どうやれば追加することができるでしょうか? おわかりの方がいらっしゃいましたら、どうか教えて下さい。 よろしくお願いします。