Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中使用WScript.CreateObject_Excel_Vba_Shell - Fatal编程技术网

在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."