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

Forumthread: In einer Schleife auf einen Tastendruck warten

In einer Schleife auf einen Tastendruck warten
29.04.2009 07:52:58
Bernd
Hallo liebe Excelisten,
ich habe leider im Archiv nichts finden können.
Ich habe ein Makro, welches automatisch nach Öffnen der Excel-Datei startet. Das läuft auch ganz gut.
Jetzt möchte ich eine Warteschleife von einer Minuten einbauen und in dieser Zeit soll auf einen Tastendruck gewartet werden z.B. ALT+m.
Nach diesem Tastendruck soll dann irgendetwas ablaufen.
Hat da jemand eine Idee?
Viele Grüße
Bernd G.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: In einer Schleife auf einen Tastendruck warten
29.04.2009 08:10:40
Tino
Hallo,
vielleicht so.
OnKey und OnTime ist in der Hilfe beschrieben.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_Open() 
    Application.OnKey "^m", "MeinMakro" 
     
    'OnKey nach einer Minute zurücksetzen 
    Application.OnTime Now + TimeSerial(0, 1, 0), "TasteZuruecksetzen" 
End Sub 

Modul Modul1

Option Explicit 
 
Sub MeinMakro() 
 Call TasteZuruecksetzen 'OnKey zurücksetzen 
  
 MsgBox "ich mache was" 
End Sub 
 
Sub TasteZuruecksetzen() 
 Application.OnKey "^m" 
End Sub 


Gruß Tino

Anzeige
AW: In einer Schleife auf einen Tastendruck warten
29.04.2009 08:31:30
Bernd
Hallo Tino,
das ist ja genial.
Hab's noch nicht ausprobiert, bin aber sehr zuversichtlich.
Jedenfalls komme ich jetzt auf jeden Fall weiter.
Vielen Dank.
Gruß
Bernd G.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

In einer Schleife auf einen Tastendruck warten in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine Schleife zu erstellen, die auf einen bestimmten Tastendruck wartet, kannst Du das folgende Vorgehen nutzen. Diese Anleitung setzt voraus, dass Du grundlegende Kenntnisse in VBA hast.

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge den Code in die Arbeitsmappe ein:

    • Gehe zu DieseArbeitsmappe und füge den folgenden Code ein:
    Option Explicit
    
    Private Sub Workbook_Open()
       Application.OnKey "^m", "MeinMakro"
    
       ' OnKey nach einer Minute zurücksetzen
       Application.OnTime Now + TimeSerial(0, 1, 0), "TasteZuruecksetzen"
    End Sub
  3. Erstelle das Makro:

    • Füge in ein neues Modul den folgenden Code ein:
    Option Explicit
    
    Sub MeinMakro()
       Call TasteZuruecksetzen ' OnKey zurücksetzen
    
       MsgBox "ich mache was"
    End Sub
    
    Sub TasteZuruecksetzen()
       Application.OnKey "^m"
    End Sub
  4. Testen:

    • Schließe den VBA-Editor und speichere die Excel-Datei als Makro-fähige Datei (.xlsm).
    • Öffne die Datei und drücke CTRL + M nach einer Minute, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht aufgerufen:

    • Stelle sicher, dass Du die Datei als .xlsm gespeichert hast, damit die Makros funktionieren.
  • Fehler: OnKey funktioniert nicht:

    • Überprüfe, ob der korrekte Tastencode verwendet wird. In diesem Beispiel ist es ^m für CTRL + M.
  • Fehler: Anwendung reagiert nicht:

    • Achte darauf, dass Du keine endlosen Schleifen erzeugst. Verwende Application.OnTime, um zeitgesteuerte Aktionen zu planen.

Alternative Methoden

Eine alternative Methode könnte die Verwendung von DoEvents in einer Schleife sein. Hier ein Beispiel:

Sub Warteschleife()
    Dim startTime As Double
    startTime = Timer

    Do While Timer < startTime + 60 ' Warte 60 Sekunden
        DoEvents ' Lass Excel weiterhin reagieren
        If GetAsyncKeyState(VK_MENU) <> 0 And GetAsyncKeyState(VK_M) <> 0 Then
            MsgBox "ALT + M gedrückt"
            Exit Do
        End If
    Loop
End Sub

Hinweis: Du musst die API-Funktion GetAsyncKeyState deklarieren, um diese Methode zu verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Makro, das eine Nachricht anzeigt, wenn ALT + M gedrückt wird:

Sub MeinBeispielMakro()
    MsgBox "Du hast ALT + M gedrückt!"
End Sub

Du kannst dieses Makro in den Workbook_Open-Sub einfügen, um es beim Öffnen der Datei direkt verfügbar zu machen.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies verbessert die Leistung, wenn Du viele Änderungen in der Schleife vornimmst.

  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um potenzielle Fehler im Code abzufangen und zu behandeln.

  • Dokumentiere Deinen Code: Füge Kommentare hinzu, um die Funktionalität jedes Abschnitts klar zu machen, besonders wenn andere Benutzer mit Deinem Code arbeiten.


FAQ: Häufige Fragen

1. Wie kann ich andere Tastenkombinationen verwenden? Du kannst die Application.OnKey-Methode anpassen, um jede beliebige Tastenkombination zu nutzen. Beispiel: "^{M}" für CTRL + M.

2. Funktioniert das auch in Excel Online? Leider funktionieren VBA-Makros nicht in Excel Online. Du musst die Desktop-Version von Excel verwenden.

3. Wie kann ich die Wartezeit anpassen? Ändere einfach den Zeitwert in Application.OnTime Now + TimeSerial(0, 1, 0), um die Wartezeit zu verlängern oder zu verkürzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige