右键单击以复制不正常

时间:2014-08-04 21:05:24

标签: vba textbox copy controls paste

我有一个文本框,我想启用右键单击功能以便复制。

我有下面的代码(感谢interweb),但是虽然它显示了菜单,但似乎没有任何东西可以进入剪贴板。

在模块1中:

Sub MakePopUp()
'Remove any old instance of MyPopUp
On Error Resume Next
CommandBars("MyPopUp").Delete
On Error GoTo 0

With CommandBars.Add(name:="MyPopUp", Position:=msoBarPopup)
    .Controls.Add Type:=msoControlButton, ID:=19
End With
End Sub

在我的用户表单文本框中:

Private Sub ResultsBox_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As     Single, ByVal Y As Single)
MakePopUp
    If Button = 2 Then
    Application.CommandBars("MyPopUp").ShowPopup
End If
End Sub

我在这里错过了一块吗?感谢

1 个答案:

答案 0 :(得分:2)

我担心你错过了一件小而重要的作品。当您点击 Copy 菜单项时,您从未告诉代码该做什么,因此没有任何结果。

要解决此问题,请在Module1中替换此行:

.Controls.Add Type:=msoControlButton, ID:=19

用这个:

.Controls.Add(Type:=msoControlButton, ID:=19).OnAction = "Textbox_Copy"

然后,仍然在Module1中添加以下Sub,它实现我们上面提到的Textbox_Copy操作。我假设您的用户表单被称为UserForm1,因此如果名称不同,您应该更改名称。

Public Sub Textbox_Copy()
  UserForm1.ResultsBox.Copy
End Sub

有几种方法可以达到你想要的效果。通过快速搜索interweb,如果您想更好地了解这一点,那么您可以查看以下内容:

前者很简单,但后者需要更多“技巧”才能理解。

前者对你正在做的事情可能已经足够好了,它可以实现其他操作,例如 Cut Paste Select All ,等等。