ユーザーがVBAのuserFormのTextBoxに値を貼り付けられるようにしたいと思います。Ctrl-vは問題なく使用できますが、誰もがその方法を知っているわけではありません。
右クリックメニューを使用してコピーと貼り付けを有効にするにはどうすればよいですか?
ユーザーがVBAのuserFormのTextBoxに値を貼り付けられるようにしたいと思います。Ctrl-vは問題なく使用できますが、誰もがその方法を知っているわけではありません。
右クリックメニューを使用してコピーと貼り付けを有効にするにはどうすればよいですか?
これは古い投稿だと思いますが、もっと効率的な方法があると思います。
ユーザーフォーム コンテキスト メニューのクラス コード
http://www.andypope.info/vba/uf_contextualmenu.htm
コード例のサンプル Excel スプレッドシートもあります。
クラス モジュールは、コンテキスト メニューの構築、テキスト ボックスでの右クリックのキャプチャ、および実際のカットを処理します。コピーおよび貼り付けアクション。このクラスは、ユーザーフォームの ActiveControl オブジェクトを利用します。このコードは、Frames や Multipage などのコンテナー コントロール内のコントロールも処理します。
ユーザーフォームからの次の初期化コードは、クラスオブジェクトの定義と使用がいかに簡単かを示しています。オブジェクトに変数を宣言し、コンテキスト メニュー機能を持たせたい各テキスト ボックスの参照を設定するだけです。すべてのコントロールをループして、各テキスト ボックスを自動的に参照できます。
Private m_colContextMenus As Collection
Private Sub UserForm_Initialize()
Dim clsContextMenu As CTextBox_ContextMenu
Dim cTRL as Control
Set m_colContextMenus = New Collection
For Each cTRL In Me.Controls
Select Case TypeName(cTRL)
Case "TextBox"
'MsgBox cTRL.Name & ": " & Me.Controls(cTRL.Name).Value
Set clsContextMenu = New CTextBox_ContextMenu
With clsContextMenu
Set .TBox = Me.Controls(cTRL.Name)
Set .Parent = Me
End With
m_colContextMenus.Add clsContextMenu, CStr(m_colContextMenus.Count + 1)
Case Else
'MsgBox TypeName(cTRL) & ": " & cTRL.Name
End Select
Next
End Sub