Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wscript.shell popup

Forumthread: Wscript.shell popup

Wscript.shell popup
31.10.2014 19:34:18
Otmar
Hallo zusammen
Mit dem nachstehenden Makro soll eine neue Tabelle eingefügt werden. Es wird geprüft, ob der Tab-Name schon vorhanden ist. Wenn ja, erscheint eine Meldung.
An dieser Stelle arbeitet ein Objekt-Shell: Die Meldung soll nach wenigen Sekunden wieder ausgeblendet werden und das Programm startet neu.
Problem: Beim ersten Aufruf passiert genau, was ich oben beschrieben habe. Beim folgenden Durchlauf bleibt die Fehlermeldung stehen und ich muss wieder mit OK den Prozess fortsetzen.
Vielen Dank für einen guten Hinweis.
Freundliche Grüsse
Otmar
Function BlattDa(strName As String) As Boolean
Dim Blatt As Worksheet
For Each Blatt In Worksheets
If Blatt.Name = strName Then
BlattDa = True
Exit Function
End If
Next Blatt
End Function

Sub TBEinfügen()
Dim TBName$
Dim Objshell As Object
Dim FText As Integer
Const Dauer As Long = 2
Set Objshell = CreateObject("Wscript.Shell")
Start:
TBName = InputBox("Welchen Namen soll das Tabellenblatt erhalten?" & Chr(13) & Chr(13) & _
"Bitte den Blattnamen eingeben:")
If TBName = "" Then Exit Sub
If BlattDa(TBName) = False Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = TBName
Else 
FText = Objshell.Popup("Der gewählte Name ist bereits in der Mappe vorhanden!", Dauer, _
"Fehlermeldung", vbInformation)
GoTo Start
End If
Exit Sub
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wscript.shell popup
31.10.2014 20:00:04
Mullit
Hallo,
kann ich nicht bestätigen, die Box wird bei mir jedesmal automatisch geschlossen; Du könntest Deinen Code vielleicht noch etwas straffen:
Option Explicit
Function BlattDa(strName As String) As Boolean
Dim lngIndex As Long
On Error Resume Next
lngIndex = Worksheets(strName).Index
If Err.Number = 0 Then BlattDa = True
End Function
Sub TBEinfügen()
Dim TBName$
Dim Objshell As Object
Const Dauer As Long = 2
Set Objshell = CreateObject("Wscript.Shell")
Start:
TBName = InputBox("Welchen Namen soll das Tabellenblatt erhalten?" & Chr(13) & Chr(13) & _
"Bitte den Blattnamen eingeben:")
If TBName = "" Then Exit Sub
If Not BlattDa(TBName) Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = TBName
Else
Objshell.Popup "Der gewählte Name ist bereits in der Mappe vorhanden!", Dauer, _
"Fehlermeldung", vbInformation
GoTo Start
End If
End Sub

Gruß,

Anzeige
AW: Wscript.shell popup
31.10.2014 20:15:12
Luschi
Hallo Otmar,
bei mir klappt es dauerhaft, wenn ich in der Zeile nach Start: folgenden Befehl einfügen
DoEvents
Gruß von Luschi
aus klein-Paris

AW: Wscript.shell popup
01.11.2014 07:33:04
Otmar
Hallo Luschi
Danke für den Hinweis. Er löst das Problem.
Gruss von Otmar
aus der Schweiz

AW: Wscript.shell popup
31.10.2014 20:24:51
Mullit
Hallo,
ah ok, gut zu wissen, hatte bisher nur unter Vista + Xl2007 getestet, da funktioniert bei mir der Ausgangscode...
Gruß,
Anzeige
;
Anzeige

Infobox / Tutorial

Wscript.shell Popup in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um ein Wscript.shell popup in Excel VBA zu nutzen, folge dieser Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  3. Gib den folgenden Code ein:

    Function BlattDa(strName As String) As Boolean
        Dim Blatt As Worksheet
        For Each Blatt In Worksheets
            If Blatt.Name = strName Then
                BlattDa = True
                Exit Function
            End If
        Next Blatt
    End Function
    
    Sub TBEinfügen()
        Dim TBName As String
        Dim Objshell As Object
        Dim FText As Integer
        Const Dauer As Long = 2
        Set Objshell = CreateObject("Wscript.Shell")
    
    Start:
        TBName = InputBox("Welchen Namen soll das Tabellenblatt erhalten?" & Chr(13) & Chr(13) & _
                          "Bitte den Blattnamen eingeben:")
        If TBName = "" Then Exit Sub
        If BlattDa(TBName) = False Then
            Worksheets.Add after:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = TBName
        Else
            FText = Objshell.Popup("Der gewählte Name ist bereits in der Mappe vorhanden!", Dauer, _
                                   "Fehlermeldung", vbInformation)
            GoTo Start
        End If
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel und drücke ALT + F8, wähle TBEinfügen und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Popup bleibt stehen: Wenn das wscript.shell popup beim zweiten Mal nicht automatisch schließt, füge DoEvents nach Start: ein:

    Start:
        DoEvents
  • Fehlermeldung beim Erstellen eines neuen Blattes: Stelle sicher, dass der Blattname nicht bereits existiert, um Konflikte zu vermeiden. Überprüfe den Code in BlattDa, der vorhandene Blätter prüft.


Alternative Methoden

Wenn der Wscript.shell popup nicht den gewünschten Effekt hat, kannst du auch die MsgBox-Funktion verwenden, um Meldungen anzuzeigen. Diese bleibt jedoch offen, bis der Benutzer sie schließt:

MsgBox "Deine Nachricht hier", vbInformation

Praktische Beispiele

Hier ein Beispiel für ein Wscript.shell popup, das nach einer bestimmten Zeit geschlossen wird:

Sub BeispielPopup()
    Dim Objshell As Object
    Set Objshell = CreateObject("Wscript.Shell")
    Objshell.Popup "Dies ist ein Popup!", 5, "Titel", vbInformation
End Sub

Dieses Popup bleibt für 5 Sekunden sichtbar und schließt sich dann automatisch.


Tipps für Profis

  • Verwende Konstanten für Zeit: Definiere eine Konstante für die Dauer, um deinen Code leichter anpassbar zu machen:

    Const Dauer As Long = 2 ' Dauer in Sekunden
  • Fehlerbehandlung: Implementiere On Error Resume Next für eine robustere Fehlerbehandlung, besonders wenn du mit Benutzerinput arbeitest.


FAQ: Häufige Fragen

1. Warum funktioniert der Popup nicht bei mir? Überprüfe, ob du die richtige Excel-Version verwendest. Das Wscript.shell funktioniert möglicherweise nicht in älteren Versionen.

2. Kann ich das Popup anpassen? Ja, du kannst den Text, Titel und die Schaltflächen des Popups anpassen, indem du die Parameter in Objshell.Popup änderst.

3. Wie schließe ich das Popup manuell? Das Popup schließt sich automatisch, aber du kannst die Zeit anpassen, indem du den zweiten Parameter in Objshell.Popup änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige