在Excel中使用WScript.CreateObject
我一直在使用在Excel中使用WScript.CreateObject,excel,vba,shell,Excel,Vba,Shell,我一直在使用 WScript.CreateObject("WScript.Shell") 要作为创建多行的方法,请将鼠标悬停在Userform上的命令按钮的5秒钟弹出窗口上。从我所能想到的一切来看,这应该可以正常工作,但它给出了一个未定义的变量错误。在调试时,它突出显示Set行中的WScript作为问题 Private Sub CB1604A_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
WScript.CreateObject("WScript.Shell")
要作为创建多行的方法,请将鼠标悬停在Userform上的命令按钮的5秒钟弹出窗口上。从我所能想到的一切来看,这应该可以正常工作,但它给出了一个未定义的变量错误。在调试时,它突出显示Set行中的WScript作为问题
Private Sub CB1604A_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
Dim WshShell
Dim BTN
Set WshShell = WScript.CreateObject("WScript.Shell")
BTN = WshShell.PopUp("What do you want to do?", 5)
Select Case BTN
Case 6
WScript.Echo "Do it now."
Case 7
WScript.Echo "Do it later."
Case -1
WScript.Echo "Cancel all actions?"
End Select
End Sub
您需要添加对WScript的引用以使用其CreateObject,但不需要;而是使用VBA的CreateObject创建.Shell的实例: 然后使用MsgBox而不是WScript.Echo:
我试过你的建议,但有一些小毛病。在我打开和关闭命令按钮时,它创建了将近200个msgbox,而弹出窗口从未显示。这是因为您使用的是MouseMove事件,所以每次鼠标在控件范围内移动时,它都会触发。如果没有遇到缺少引用的问题,您的原始代码也会发生同样的情况。
Set WshShell = CreateObject("WScript.Shell")
BTN = WshShell.PopUp("What do you want to do?", 5)
...
MsgBox "Do it now."