我正在创建一个弹出菜单以粘贴到Excel工作表上的ActiveX文本框中。弹出窗口有效,但“粘贴”选项显示为灰色。
Private Sub txtInput_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = vbKeyRButton Then
Call ShowMenu
Application.CommandBars("MyMenu").ShowPopup
End If
End Sub
Sub ShowMenu()
'Remove any old instance of MyPopUp
On Error Resume Next
CommandBars("MyMenu").Delete
On Error GoTo 0
With CommandBars.Add(name:="MyMenu", Position:=msoBarPopup)
With .Controls.Add(Type:=msoControlButton, ID:=22)
.Enabled = True
End With
End With
End Sub
我添加了.Enabled = True
,但没有解决问题。我确定我遗漏了一些基本的东西。
其他问题,一旦用户可以点击粘贴,我是否必须添加OnAction
并引用子文件,让它实际将文本粘贴到文本框中或使用msoControlButton ID 22足以指示文本的粘贴?
答案 0 :(得分:1)
附加问题,一旦用户可以点击粘贴,我是否必须添加OnAction并引用一个子实际将文本粘贴到文本框中,或者使用ID为22的msoControlButton足以指示粘贴文本?
不,你实际上也不需要使用它们,因为ActiveX TextBox
类有一个Paste
方法,你可以使用它。因此,在cmdPasteButton_Click
事件程序中,捎带@Mukul Varney的回答,您可以这样做:
txtInput.Paste
这应该将剪贴板内容粘贴到TextBox中的光标位置。
Private Sub cmdPasteButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
txtInput.Paste
CancelDefault = True
End Sub
答案 1 :(得分:0)
请尝试以下操作。我已启用粘贴。
Private WithEvents cmdPasteButton As CommandBarButton
Private Sub txtInput_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = vbKeyRButton Then
Call ShowMenu
Application.CommandBars("MyMenu").ShowPopup
End If
End Sub
Sub ShowMenu()
'Remove any old instance of MyPopUp
On Error Resume Next
CommandBars("MyMenu").Delete
On Error GoTo 0
Set cmdPasteButton = CommandBars.Add(Name:="MyMenu", Position:=msoBarPopup).Controls.Add(Type:=msoControlButton, ID:=22)
cmdPasteButton.OnAction = "Textbox_Paste"
End Sub
Private Sub cmdPasteButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
MsgBox "hello from cmdPasteButton_Click"
CancelDefault = True
End Sub