我有一个文本框,我想启用右键单击功能以便复制。
我有下面的代码(感谢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
我在这里错过了一块吗?感谢
答案 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
,等等。