VBA如何使用右键单击复制并粘贴到Userform中?

时间:2010-02-04 19:19:34

标签: vba copy-paste userform

我想允许用户能够在VBA中的userForm中将值粘贴到TextBoxes中。你可以使用Ctrl-v,但不是每个人都知道怎么做。

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

2 个答案:

答案 0 :(得分:2)

我意识到这是一个老帖子,但我相信有一种更有效的方法 Userform上下文菜单类代码

http://www.andypope.info/vba/uf_contextualmenu.htm

代码示例甚至还有示例excel电子表格。

类模块处理上下文菜单的构造,右键单击文本框和实际剪切。复制和粘贴操作。该类使用userform的ActiveControl对象。代码甚至处理容器控件中的控件,例如Frames和Multipage。

来自userform的以下初始化代码显示了定义和使用类对象的简单程度。您只需要向对象声明一个变量,然后为每个要具有上下文菜单功能的文本框设置一个引用。您可以遍历所有控件并自动引用每个文本框。

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

Download example workbook which contains both .xls and .xlsm files

答案 1 :(得分:1)