2

我希望允许用户能够将值粘贴到 VBA 中 userForm 中的 TextBoxes 中。您可以很好地使用 Ctrl-v,但不是每个人都知道如何做到这一点。

如何使用右键菜单启用复制和粘贴?

4

2 回答 2

3

我意识到这是一个旧帖子,但我相信有一种更有效的方法。
用户窗体上下文菜单类代码

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

下载包含 .xls 和 .xlsm 文件的示例工作簿

于 2013-08-30T19:47:40.780 回答
1

这可能很有趣:http ://word.mvps.org/faqs/userforms/AddRightClickMenu.htm

于 2010-02-04T19:50:25.923 回答