Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CreateObject("WScript.Shell").Popup

Forumthread: CreateObject("WScript.Shell").Popup

CreateObject("WScript.Shell").Popup
03.05.2021 13:26:48
Niclaus
Guten Tag
Ich habe folgendes Makro

Sub Test()
CreateObject("WScript.Shell").Popup "Ist das Handy bereit?", 2
End Sub
In einer "Box" erscheint die Frage, und nach zwei Sekunden sollte diese Box automatisch verschwinden. Das hat funktioniert, bis heute. Da ist mir aufgefallen, dass in Excel diese Box nicht mehr automatisch verschwindet. Ich muss (wie bei einer MsgBox) OK drücken, damit sie verschwindet.
Seltsamerweise funktioniert das gleiche Makro in Word wie gewünscht.
Die Einstellungen in Excel habe ich nicht geändert. - Weiss jemand von Euch, warum das in Excel nicht mehr funktioniert?
Vielen Dank und freundliche Grüsse
Niclaus
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CreateObject("WScript.Shell").Popup
03.05.2021 13:37:35
Nepumuk
Hallo Niclaus,
warum das nicht mehr funktioniert kann ich dir nicht sagen. Aber ich habe einen Ersatz für die Funktion:
Code:

[Cc][+][-]

Option Explicit Private Declare PtrSafe Function MessageBoxTimeoutA Lib "user32.dll" ( _ ByVal hWnd As LongPtr, _ ByVal lpText As String, _ ByVal lpCation As String, _ ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Integer, _ ByVal dwMiliseconds As Long) As Long Private Const MB_TIMEOUT As Long = &H7D00 Public Sub test() Dim lngReturn As Long lngReturn = MessageBoxTimeoutA(Application.hWnd, "Hallo", _ "TimeoutTest", vbYesNo Or vbInformation, 0, 5000) ' 5000 = 5 Sekunden Select Case lngReturn Case MB_TIMEOUT Debug.Print "TimeOut" Case vbOK, vbYes Debug.Print "Ok, Ja" Case vbAbort, vbCancel Debug.Print "Abrechen" Case vbNo Debug.Print "Nein" Case vbRetry Debug.Print "Wiederholen" Case Else Debug.Print lngReturn End Select End Sub

Gruß
Nepumuk
Anzeige
AW: CreateObject("WScript.Shell").Popup
03.05.2021 17:20:00
Niclaus
Hallo Nepumuk
Vielen Dank! Dein Makro funktioniert.
Viele Grüsse
Niclaus
AW: CreateObject("WScript.Shell").Popup
03.05.2021 13:40:29
volti
Hallo Niclaus,
funktioniert neuerdings bei mir auch nicht mehr zuverlässig.
Warum weiß ich leider nicht.
Falls niemand einen Tipp zur Behebung hat , hier eine Alternative. Diese benutze ich oft.
Code:

[Cc]

Private Declare PtrSafe Function MessageBoxTimeoutA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal lpText As String, _ ByVal lpCation As String, ByVal uType As Long, _ ByVal wLanguageId As Integer, ByVal dwMiliseconds As Long) As Long Sub Test() MessageBoxTimeoutA Application.hwnd, "Ist das Handy bereit?", "TimeOut", _ vbInformation, 0, 2000 End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: CreateObject("WScript.Shell").Popup
03.05.2021 17:16:13
Niclaus
Vielen Dank Karl-Heinz!
Dein Makro funktioniert.
Viele Grüsse aus Zürich
Niclaus
AW: CreateObject("WScript.Shell").Popup
03.05.2021 17:17:08
Niclaus
Vielen Dank Karl-Heinz!
Dein Makro funktioniert.
Viele Grüsse aus Zürich
Niclaus
wenn es funktioniert....
03.05.2021 17:20:40
Werner
Hallo,
...warum stellst du den Beitrag auf offen also ungelöst?
Gruß Werner
Anzeige
AW: wenn es funktioniert....
03.05.2021 18:00:33
Niclaus
Das war ein ganz falscher Klick!
Grüsse Niclaus
;
Anzeige

Infobox / Tutorial

WScript.Shell Popup in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um ein Popup mit WScript.Shell in Excel VBA zu erstellen, kannst du das folgende Makro verwenden:

Sub Test()
    CreateObject("WScript.Shell").Popup "Ist das Handy bereit?", 2
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und führe das Makro aus (ALT + F8 und wähle Test aus).

Beachte, dass in diesem Fall das Popup nach 2 Sekunden automatisch verschwinden sollte. Wenn das nicht funktioniert, gehe zu den folgenden Abschnitten für mögliche Lösungen.


Häufige Fehler und Lösungen

  • Popup verschwindet nicht automatisch: Wenn das Popup nicht wie erwartet verschwindet, kann dies an Änderungen in den Excel-Einstellungen oder an einer Konflikt zwischen Excel und WScript.Shell liegen.

    Lösung: Probiere alternative Methoden, wie im nächsten Abschnitt beschrieben.

  • Fehlermeldung: Wenn du eine Fehlermeldung erhältst, stelle sicher, dass du die richtige Syntax verwendest und dass Excel VBA die Berechtigung hat, auf WScript.Shell zuzugreifen.


Alternative Methoden

Wenn CreateObject("WScript.Shell").Popup nicht funktioniert, kannst du die MessageBoxTimeoutA aus der user32.dll verwenden. Hier ist ein Beispiel:

Private Declare PtrSafe Function MessageBoxTimeoutA Lib "user32.dll" ( _
    ByVal hWnd As LongPtr, _
    ByVal lpText As String, _
    ByVal lpCation As String, _
    ByVal uType As Long, _
    ByVal wLanguageId As Integer, _
    ByVal dwMiliseconds As Long) As Long

Sub Test()
    MessageBoxTimeoutA Application.hWnd, "Ist das Handy bereit?", "TimeOut", 0, 0, 2000
End Sub

In diesem Beispiel wird das Popup für 2000 Millisekunden (2 Sekunden) angezeigt.


Praktische Beispiele

Hier sind einige weitere Beispiele, die zeigen, wie du Popups in Excel VBA nutzen kannst:

  1. Einfaches Popup:

    Sub EinfachesPopup()
       MsgBox "Dies ist ein einfaches Popup."
    End Sub
  2. Popup mit Timeout:

    Sub PopupMitTimeout()
       MessageBoxTimeoutA Application.hWnd, "Timeout Popup", "Info", 0, 0, 5000
    End Sub
  3. Popup mit Auswahlmöglichkeiten:

    Sub AuswahlPopup()
       Dim Antwort As Long
       Antwort = MsgBox("Möchtest du fortfahren?", vbYesNo + vbQuestion, "Wahl")
       If Antwort = vbYes Then
           MsgBox "Du hast Ja gewählt."
       Else
           MsgBox "Du hast Nein gewählt."
       End If
    End Sub

Tipps für Profis

  • Nutze CreateObject("WScript.Shell") für einfache Popups, aber sei dir bewusst, dass es gelegentlich Probleme in Excel geben kann.
  • Bei komplexeren Anforderungen kannst du die MessageBoxTimeoutA verwenden, um die Kontrolle über die Zeitdauer des Popups zu haben.
  • Teste deine Makros in verschiedenen Excel-Versionen, um sicherzustellen, dass sie überall funktionieren.

FAQ: Häufige Fragen

1. Warum funktioniert der WScript.Shell Popup nicht in Excel? Es kann mehrere Gründe geben, darunter Einstellungen in Excel oder Konflikte mit anderen VBA-Projekten. Überprüfe deine Makro-Sicherheitseinstellungen.

2. Kann ich den Popup-Text dynamisch gestalten? Ja, du kannst Variablen in den Popup-Text einfügen, indem du den Text in Anführungszeichen durch eine Variable ersetzt, z.B. CreateObject("WScript.Shell").Popup myVar.

3. Ist die Verwendung von WScript.Shell sicher? In den meisten Fällen ist es sicher, solange du den Code selbst schreibst und verstehst, was er tut. Achte darauf, keine unsicheren Skripte aus unbekannten Quellen auszuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige