
A 回答 (4件)
- 最新から表示
- 回答順に表示
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
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
この回答への補足
回答ありがとう御座います。早速試してみました。Excelワークシート上で右クリックをするとショートカットメニューが出るのですが、
作成したユーザーフォーム上では出ませんでした。
Application.CommandBarsの引数が"Cell"になっているのは、ワークシート上だからと思い、引数を"UserForm"などに変えてみてもエラーなってしまい、うまくいきません。なにか有効なパラメータとか、そうでないものがあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
リストビューをスクロールさせるには
Visual Basic(VBA)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
5
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
6
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
-
7
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
8
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
9
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
10
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
11
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
12
vba Listviewでのチェックボックスのイベントを教えてください
Excel(エクセル)
-
13
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
14
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
15
ユーザーフォーム上に表示されているテキストブックのテキストを右クリックでコピー&ペーストする方法
Excel(エクセル)
-
16
テキストボックスのカーソル位置の取得・設定方法
Visual Basic(VBA)
-
17
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
18
VBAのリストボックスで、横スクロールバーを表示するには?
Visual Basic(VBA)
-
19
メニューバーのイベントが2回実行される
Visual Basic(VBA)
-
20
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
マインクラフトPCをプレイしよ...
-
xcopyでのバッチコピー方法でコ...
-
「ファイルが見つかりません D...
-
Vba初心者です。下記のコード助...
-
frxファイルの役目
-
ファイルサーバ上のファイルが...
-
エクセルのハイパーリンクがコ...
-
bat 同名ファイルコピー時にリ...
-
エクセルファイルに「コピー」...
-
Nimdaに感染していたのに...
-
バッチファイルのコピーで
-
ハイフネーションされている英...
-
vbsでファイルやフォルダのコピ...
-
Perl5とMysql
-
FTPとファイルコピーの違いにつ...
-
VB6.0でデバッグ時、文字列の値...
-
MSオフィス2013にMS365が上書き...
-
VBS でファイルをコピーする際...
-
ファイルのコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
バッチファイル XCOPYで上書き...
-
frxファイルの役目
-
エクセルのハイパーリンクがコ...
-
Vba初心者です。下記のコード助...
-
ファイルサーバ上のファイルが...
-
同じファイル名 上書きしないフ...
-
[エクセル]コピーするとオブジ...
-
xcopyでのバッチコピー方法でコ...
-
bat 同名ファイルコピー時にリ...
-
バッチファイル 別ファイルにリ...
-
バッチファイルのコピーで
-
アクセス クエリを別のファイ...
-
DOSコマンドのコピー完了判定
-
FTPとファイルコピーの違いにつ...
-
vbsでファイルやフォルダのコピ...
-
エクセル2010、図が大きすぎま...
-
現在のブックを閉じないで、マ...
-
vbsでExcelのシートをコピーす...
-
共有フォルダへのフォルダ作成...
おすすめ情報