2017-05-05 3 views
0

Ich habe untersucht, mit WScript.CreateObject ("WScript.Shell") als Mittel zum Erstellen eines mehrzeiligen, Hover-over, 5 Sekunden-Popup für eine Befehlsschaltfläche in einem Benutzerformular. Von allem, was ich mir vorstellen kann, sollte das funktionieren, aber es gibt einen Fehler "Variable nicht definieren". Beim Debuggen wird "WScript" in der SET-Zeile als Problem hervorgehoben. Bitte hilf mir, dass ich verloren bin.Verwenden von WScript.CreateObject in Excel

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

Antwort

1

Sie müssten einen Verweis auf WScript hinzufügen verwenden seine CreateObject - aber Sie brauchen nicht zu; verwenden Sie stattdessen VBA CreateObject auf eine Instanz von .Shell zu erstellen:

Set WshShell = CreateObject("WScript.Shell") 
BTN = WshShell.PopUp("What do you want to do?", 5) 

Und anschließend MsgBox anstelle von WScript.Echo:

... 
MsgBox "Do it now." 
+0

Ich habe versucht, Ihren Vorschlag und hatte ein paar Pannen. Es hat fast 200 msgbox in der Zeit erstellt, die ich brauchte, um die Befehlsschaltfläche ein- und auszuschalten, und das Popup wurde nie angezeigt. – Hareborn

+0

Das liegt daran, dass Sie das MouseMove-Ereignis verwenden, sodass es jedes Mal ausgelöst wird, wenn sich Ihre Maus innerhalb der Grenzen des Steuerelements bewegt. Das Gleiche würde mit Ihrem ursprünglichen Code passieren, wenn Sie nicht auf das fehlende Referenzproblem gestoßen wären. –

Verwandte Themen