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

Unterbrechen VBA Code [STRG]+[PAUSE] verhindern

Forumthread: Unterbrechen VBA Code [STRG]+[PAUSE] verhindern

Unterbrechen VBA Code [STRG]+[PAUSE] verhindern
21.02.2003 12:58:49
Christian
Kann man die Tastenkombination und damit die Unterbrechung eines VBA Codes durch den User mit [STRG]+[PAUSE] verhindern?
(Hier: Einlesen von Daten aus mehreren hundert .xls files. Wird der Code vorzeitig abgebrochen, kommt es natürlich im Anschluss zu einer falschen Auswertung der Daten.....)

Danke
Christian



Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Unterbrechen VBA Code [STRG]+[PAUSE] verhindern
21.02.2003 13:00:34
Ralf Sögel

Schau mal unter EnableCancelKey in der OLH(oder Recherche).
Gruß Ralf

Application.EnableCancelKey = xlDisabled
21.02.2003 13:11:53
Christian

Danke...

Anzeige
;
Anzeige

Infobox / Tutorial

VBA Code Unterbrechung Verhindern: STRG+PAUSE Deaktivieren


Schritt-für-Schritt-Anleitung

Um die Unterbrechung eines VBA Codes durch die Tastenkombination [STRG]+[PAUSE] zu verhindern, kannst du die EnableCancelKey-Eigenschaft von VBA nutzen. Hier ist eine einfache Anleitung, wie du dies umsetzen kannst:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (ALT + F11).

  2. Wähle das entsprechende Modul aus, in dem dein Code steht.

  3. Füge am Anfang deines Makros die folgende Zeile ein:

    Application.EnableCancelKey = xlDisabled
  4. Am Ende deines Makros solltest du sicherstellen, dass die Einstellung zurückgesetzt wird:

    Application.EnableCancelKey = xlNormal
  5. Speichere den Code und führe das Makro aus.

Durch diese Schritte wird der VBA Code unterbrochen, falls der Benutzer die [STRG]+[PAUSE] Kombination drückt, und das führt zu einer stabileren Ausführung deines Codes, gerade wenn du Daten aus mehreren Dateien einliest.


Häufige Fehler und Lösungen

  • Fehler: Code wird trotzdem unterbrochen

    • Lösung: Stelle sicher, dass du die EnableCancelKey-Einstellung direkt am Anfang deines Makros gesetzt hast und dass sie am Ende des Codes wieder auf xlNormal zurückgesetzt wird.
  • Fehler: Makro läuft nicht wie erwartet

    • Lösung: Überprüfe, ob andere Teile des Codes das Verhalten von EnableCancelKey beeinflussen. Manchmal kann eine andere Einstellung in einem anderen Teil des Codes das Verhalten ändern.

Alternative Methoden

Falls du eine andere Möglichkeit suchst, die PAUSE-Funktion zu umgehen, kannst du auch die Verwendung von Schleifen in Betracht ziehen. Hierbei kannst du die Ausführung des Codes gezielt steuern. Zum Beispiel:

Dim startTime As Double
Dim elapsedTime As Double

startTime = Timer
Do While elapsedTime < 10 ' Wartet 10 Sekunden
    elapsedTime = Timer - startTime
Loop

Diese Methode kann hilfreich sein, wenn du eine gezielte Pause im Code haben möchtest, ohne dass der Benutzer den Code unterbrechen kann.


Praktische Beispiele

Betrachten wir ein Beispiel, in dem du Daten aus mehreren Excel-Dateien einliest. Hier ist ein einfaches Makro, das die EnableCancelKey-Einstellung nutzt:

Sub DatenEinlesen()
    Application.EnableCancelKey = xlDisabled
    Dim wb As Workbook
    Dim Pfad As String
    Pfad = "C:\Dein\Pfad\Zu\Dateien\*.xls"

    ' Schleife über alle Excel-Dateien im angegebenen Pfad
    Dim Datei As String
    Datei = Dir(Pfad)

    Do While Datei <> ""
        Set wb = Workbooks.Open(Pfad & Datei)
        ' ... Daten einlesen ...
        wb.Close SaveChanges:=False
        Datei = Dir
    Loop

    Application.EnableCancelKey = xlNormal
End Sub

Dieses Beispiel zeigt, wie du die EnableCancelKey-Funktion effektiv einsetzen kannst, um Daten ohne Unterbrechung zu verarbeiten.


Tipps für Profis

  • Verwende On Error-Anweisungen: Setze On Error-Anweisungen ein, um Fehler im Code zu behandeln und sicherzustellen, dass die EnableCancelKey-Einstellung immer zurückgesetzt wird, auch wenn ein Fehler auftritt.

  • Nutze DoEvents: In langen Schleifen kannst du DoEvents verwenden, um die Benutzeroberfläche responsiv zu halten, während der Code läuft.

  • Kommentare: Dokumentiere deinen Code gut, damit du und andere Benutzer später nachvollziehen können, warum bestimmte Einstellungen wie EnableCancelKey gesetzt wurden.


FAQ: Häufige Fragen

1. Was passiert, wenn ich EnableCancelKey nicht setze? Wenn du diese Einstellung nicht setzt, kann der Benutzer den Code jederzeit mit [STRG]+[PAUSE] unterbrechen, was zu inkonsistenten Ergebnissen führen kann.

2. Gibt es eine Möglichkeit, die Pause-Taste nur temporär zu deaktivieren? Ja, du kannst EnableCancelKey vor kritischen Abschnitten im Code setzen und danach wieder auf xlNormal zurücksetzen, um die Funktionalität wiederherzustellen.

3. Funktioniert das auch in älteren Excel-Versionen? Ja, die Verwendung von Application.EnableCancelKey ist in den meisten Versionen von Excel VBA verfügbar. Achte darauf, dass dein Code in der entsprechenden Excel-Version getestet wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige