Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Alternative zu SendKeys "{Enter}"

Alternative zu SendKeys "{Enter}"
21.08.2017 11:20:05
Dre
Hallo liebe VBA-Community,
ich habe ein problem mit SendKeys "{Enter}".
Ich benutze es in einer Schleife.
Ich öffne ein externes Excel-File, bearbeite es und beim Schließen dieser externer Datei wird ein MsgBox geöffnet, der mit "OK" bestätigt werden soll, damit die Datei geschlossen wird.
Es funktioniert nur beim ersten Durchgang, ab den zweiten leider nicht mehr.
Könnt mir jemand sagen woran es liegen kann oder eine Alternative zu SendKeys vorschlagen? Grundsätzlich soll diesen externen MsgBox automatisch geschlossen werden!
Vielen Dank im Voraus.
Freundliche Grüße,
Dre
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alternative zu SendKeys "{Enter}"
21.08.2017 11:26:58
ChrisL
Hi
Wenn die MsgBox aus einem Workbook_BeforeClose Ereignis stammt, dann kannst du das Ereignis mittels
Application.EnableEvents = False
unterdrücken.
1. nicht vergessen die Events anschliessend wieder einschalten
2. natürlich wird das gesamte Ereignis unterdrückt (nicht nur die MsgBox)
Ohne die Zusammenhänge und die Codes zu kennen wird eine Hilfe schwierig.
cu
Chris
Anzeige
AW: Alternative zu SendKeys "{Enter}"
21.08.2017 11:34:38
Luschi
Hallo Dre,
zeig doch mal die entsprechende Vba-Sequenz. Beim Öffnen einer externen Exceldatei sollte man mit Objekt-Variablen arbeiten (Set-Befehl), das Ergebnis der MsgBox kann man in eine Variable speichen und bei Ja (vbYes) kann man die repräsentative Objekt-Variable (und damit die Datei) schließen.
Dazu braucht man keinen SendKeys-Befehl, der von Windows/Office sowieso immer mehr in den Schwitzkasdten genommen wird und dann wirkungslos verpufft!
Gruß von Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Alternative zu SendKeys "{Enter}"


Schritt-für-Schritt-Anleitung

Wenn Du eine MsgBox automatisch schließen möchtest, ohne SendKeys "{Enter}" zu verwenden, kannst Du die folgenden Schritte befolgen:

  1. Öffne das externe Excel-Dokument:

    Dim wb As Workbook
    Set wb = Workbooks.Open("Pfad\zur\deiner\Datei.xlsx")
  2. Bearbeite die Datei nach Bedarf.

  3. Verhindere das Öffnen der MsgBox: Um die MsgBox zu unterdrücken, kannst Du die Ereignisbehandlung deaktivieren:

    Application.EnableEvents = False
  4. Schließe die Datei: Verwende Workbook.Close, um die Datei zu schließen, ohne die MsgBox anzuzeigen.

    wb.Close SaveChanges:=True
  5. Aktiviere die Ereignisbehandlung wieder:

    Application.EnableEvents = True

Häufige Fehler und Lösungen

  • Fehler: SendKeys funktioniert nicht
    Wenn SendKeys in Deinem Code nicht funktioniert, könnte es daran liegen, dass die Anwendung den Fokus verloren hat. Teste die Verwendung von Application.Wait oder DoEvents, um sicherzustellen, dass die Anwendung bereit ist.

  • Lösung: Verwendung von Objektvariablen
    Stelle sicher, dass Du bei der Arbeit mit externen Excel-Dateien Objektvariablen verwendest. Dies hilft, die Kontrolle über das geöffnete Workbook zu behalten und Probleme mit der MsgBox zu vermeiden.


Alternative Methoden

Falls Du SendKeys vermeiden möchtest, gibt es einige Alternativen:

  • Objektvariablen: Nutze die Möglichkeit, die MsgBox-Antwort in einer Variablen zu speichern. Beispiel:

    Dim response As VbMsgBoxResult
    response = MsgBox("Möchten Sie die Datei schließen?", vbYesNo)
    If response = vbYes Then
      wb.Close SaveChanges:=True
    End If
  • Ereignisprozeduren: Verwende Workbook_BeforeClose, um spezifische Aktionen auszuführen, bevor die Datei geschlossen wird.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die MsgBox umgehen und eine Datei schließen kannst:

Sub CloseWorkbookWithoutMsgBox()
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\Dein\Pfad\zur\Datei.xlsx")

    Application.EnableEvents = False
    wb.Close SaveChanges:=True
    Application.EnableEvents = True
End Sub

Dieses Beispiel zeigt, wie Du das Workbook öffnest und es schließt, ohne dass eine MsgBox angezeigt wird.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren und hilft, Fehler zu vermeiden.

  • Teste Deine Codes: Führe Deine VBA-Skripte in einer Testumgebung aus, bevor Du sie in einer Produktionsumgebung verwendest.

  • Halte den Code sauber: Verwende Kommentare und strukturiere Deinen Code klar, um die Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Warum funktioniert SendKeys manchmal nicht?
SendKeys kann unzuverlässig sein, da es auf den Fokus der Anwendung angewiesen ist. Wenn eine andere Anwendung im Vordergrund ist, kann der Befehl nicht wie gewünscht ausgeführt werden.

2. Was sind die Vorteile von Objektvariablen?
Objektvariablen helfen, die Kontrolle über geöffnete Workbooks zu behalten und bieten eine sicherere und robustere Methode, um mit Excel zu interagieren, ohne auf SendKeys zurückgreifen zu müssen.

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