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

Forumthread: bei msgbox automatisch ok klicken

bei msgbox automatisch ok klicken
Peter
Hallo zusammen,
folgende Situation: ich möchte nachts (weil zeitaufwändig) im Taskplaner eine Datei mit mehreren Makros laufen lassen. Ich möchte das so lösen, dass ich eine zweite Datei als Task einplane, aus der die andere Datei mit den Makros gestartet wird.
Hier mein Code für die erste Datei:

Sub DateienÖffnen()
Workbooks.Open Filename:="C:\Desktop\TEST_Makro.xls"
ActiveWorkbook.Close Savechanges:=False
ClearClipboard = True
ActiveWorkbook.Close Savechanges:=False
Application.Quit
End Sub
In der zweiten Datei erscheint als Abfrage eine MsgBox, damit der Code nicht ausgeführt wird, wenn die Datei so geöffnet wird:

Sub LosGehts()
If MsgBox("Abfragen Aktualisierung Starten?", vbOKCancel) = vbOK Then
Call Makro1
'... hier noch mehr Code
End If
End Sub
Nun zu meinem Problem: Was muss ich im ersten Code ergänzen, dass diese Abfrage automatisch mit ok bestätigt wird? Ich kenne das nur von einer UserForm:

UserForm1.cmdOk = True
Aber hier habe ich ja eine MsgBox.
Vielen Dank vorab!
Beste Grüße,
Peter
Anzeige
AW: bei msgbox automatisch ok klicken
13.12.2011 14:57:35
Rudi
Hallo,
eine Msgbox kannst du nicht per Code Klicken.
Wie wird denn LosGehts gestartet? Per Workbook_Open in Test_Makro.xls?
Vielleicht so:
Sub DateienÖffnen()
Application.EnableEvents = False
Workbooks.Open Filename:="C:\Desktop\TEST_Makro.xls"
Application.EnableEvents = True
Application.Run "test_makro.xls!Makro1"
ActiveWorkbook.Close Savechanges:=False
ClearClipboard = True
ActiveWorkbook.Close Savechanges:=False
Application.Quit
End Sub

Gruß
Rudi
Anzeige
AW: bei msgbox automatisch ok klicken
13.12.2011 15:03:06
Peter
Hallo Rudi,
sorry, diesen Teil hatte ich vergessen:

Private Sub Workbook_Open()
Call LosGehts
End Sub
also so, wie du sagtest.
Hab mal deinen Code ausprobiert, es erscheint aber immer noch die msgbox. Noch ne Idee?
Danke + Gruß,
Peter
Anzeige
AW: bei msgbox automatisch ok klicken
13.12.2011 15:08:35
Rudi
Hallo,
wenn die Events ausgeschaltet sind, darf Workbook_Open eigentlich nicht laufen.
Was macht Makro1?
Gruß
Rudi
AW: bei msgbox automatisch ok klicken
13.12.2011 15:11:06
Peter
Hallo Rudi,
Makro1 zieht sich Daten per SQL aus einem anderen System und erstellt eine Pivot-Tabelle.
Gruß,
Peter
AW: bei msgbox automatisch ok klicken
13.12.2011 15:15:17
Rudi
Hallo,
keine Ahnung, was passiert. Geh den Code mal mit F8 durch. Dann siehst du, wann die MsgBox kommt.
Gruß
Rudi
Anzeige
AW: bei msgbox automatisch ok klicken
13.12.2011 15:32:31
Peter
Hallo Rudi,
eine andere Möglichkeit wäre, die msgbox nach einiger Zeit auszuschalten. Aber das klappt bei mir auch nicht. Wärst du so freundlich, dir den Code mal anzuschauen?
https://www.herber.de/bbs/user/77965.xls
Danke!!!
Gruß,
Peter
Anzeige
geht doch! owT
13.12.2011 15:42:00
Rudi
AW: geht doch nicht!
13.12.2011 15:46:34
Peter
nee, eben nicht. Die Abfrage wird auch ausgeführt, wenn ich "ok" drücke, in diesem Fall soll aber abgebrochen werden...
so geht's
13.12.2011 16:37:09
Rudi
Hallo,
Sub LosGehts()
'Verweis auf Microsoft Scripting Runtime erforderlich!!!!!!!
Dim WshShell
Dim intMSG As Integer
Set WshShell = CreateObject("WScript.Shell")
If WshShell.Popup("OK drücken, wenn Abfrage abgebrochen werden soll. Sonst startet die  _
Abfrage in 5 Sekunden.", 5, "Überschrift...", 64) = vbOK Then
Exit Sub
Else
Dim i As Integer
i = 1
Range("A1").Select
Selection = i
End If
End Sub

Gruß
Rudi
Anzeige
AW: so geht's! danke Rudi! owT
14.12.2011 08:32:46
Peter
.
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Bestätigen von MsgBox in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine MsgBox in Excel VBA automatisch mit "OK" zu bestätigen, kannst du die WScript.Shell-Objekt verwenden. Hier ist eine einfache Anleitung, wie du das umsetzen kannst:

  1. Füge in deinem Excel VBA-Projekt einen Verweis auf die Microsoft Scripting Runtime hinzu. Gehe zu Extras > Verweise und aktiviere die Option.
  2. Verwende den folgenden Code für deine MsgBox:
Sub LosGehts()
    Dim WshShell
    Set WshShell = CreateObject("WScript.Shell")

    If WshShell.Popup("OK drücken, wenn Abfrage abgebrochen werden soll. Sonst startet die Abfrage in 5 Sekunden.", 5, "Überschrift...", 64) = vbOK Then
        Exit Sub
    Else
        ' Hier kommt dein Code
        Dim i As Integer
        i = 1
        Range("A1").Select
        Selection = i
    End If
End Sub
  1. Stelle sicher, dass der Code in einem geeigneten Makro (z.B. Workbook_Open) aufgerufen wird, um die MsgBox zu aktivieren.

Häufige Fehler und Lösungen

  • MsgBox wird weiterhin angezeigt: Wenn du die MsgBox trotz des Codes siehst, überprüfe, ob die Application.EnableEvents-Eigenschaft korrekt gesetzt ist. Sie sollte auf False gesetzt werden, bevor du die Datei öffnest und auf True, wenn du bereit bist, Events erneut zuzulassen.

  • Fehlende Verweise: Wenn du das WScript.Shell-Objekt nicht erstellen kannst, stelle sicher, dass der Verweis auf die Microsoft Scripting Runtime korrekt gesetzt ist.


Alternative Methoden

Eine andere Möglichkeit, die MsgBox zu umgehen, besteht darin, die Logik so zu ändern, dass anstelle einer MsgBox eine UserForm verwendet wird. Eine UserForm kann programmgesteuert geschlossen werden, ohne dass der Benutzer eingreifen muss.

Hier ein einfaches Beispiel für eine UserForm:

Private Sub cmdOk_Click()
    Me.Hide
End Sub

Du kannst die UserForm im Hintergrund zeigen und dann automatisch die cmdOk_Click-Routine aufrufen.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du eine Datei öffnen und eine MsgBox anzeigen lassen kannst, die automatisch mit "OK" bestätigt wird:

Sub DateienÖffnen()
    Dim WshShell
    Set WshShell = CreateObject("WScript.Shell")

    Workbooks.Open Filename:="C:\Desktop\TEST_Makro.xls"

    If WshShell.Popup("Abfragen Aktualisierung Starten?", 5, "Überschrift...", vbOKCancel) = vbOK Then
        Call Makro1
    End If

    ActiveWorkbook.Close Savechanges:=False
    Application.Quit
End Sub

Tipps für Profis

  • Verwende die vbMsgBoxStyle-Konstanten für eine bessere Lesbarkeit deines Codes.
  • Teste deinen Code in verschiedenen Szenarien, um sicherzustellen, dass die MsgBox nur dann angezeigt wird, wenn es nötig ist.
  • Dokumentiere deinen Code gut, insbesondere wenn du mit automatisierten MsgBoxen arbeitest, um Missverständnisse zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich eine MsgBox ohne Benutzerinteraktion verwenden?
Ja, indem du das WScript.Shell-Objekt verwendest, kannst du die MsgBox automatisch bestätigen.

2. Wie kann ich verhindern, dass die MsgBox angezeigt wird?
Ändere die Logik in deinem Code so, dass die MsgBox nur unter bestimmten Bedingungen angezeigt wird, oder ersetze sie durch eine UserForm.

3. Was muss ich tun, wenn mein Code nicht funktioniert?
Überprüfe die Einstellungen für Application.EnableEvents und stelle sicher, dass alle benötigten Verweise gesetzt sind. Debugge den Code mit F8, um den genauen Ausführungsweg zu erfahren.

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