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

VBA - Abfrage von Tastendruck

Forumthread: VBA - Abfrage von Tastendruck

VBA - Abfrage von Tastendruck
04.09.2017 11:38:55
Tastendruck
Hallo Community,
wollte mal Fragen ob Excel es möglich macht, abzufragen wie oft eine Taste in einem Gewissen Zeitraum gedrückt wurde!
Sprich, ich drücke die Taste 5, 4 mal hintereinander!
Kann man per Makro anzeigen lassen, welche Taste wie oft gedrückt wurde?
Noch besser oder genialer wäre es, wenn man es schafft, dass es nur gezählt wird, wenn nach einem Druck keine Sekunde vergangen ist.
Sprich, ich drücke die 4 warte eine halbe Sekunde drücke nochmal die 4 und warte eine Sekunde, dann wird das Makro geschlossen und als Ausgabe eine 2 für 2x rücken ausgegeben.
Geht das?
Grüße,
Garnelchen
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Abfrage von Tastendruck
04.09.2017 11:55:23
Tastendruck
Hi
für Excelzellen nein, aber für ActiveX-Steuerelemente bzw die Steuerelemente in einer Userform lässt sich über das KeyPress-Event sowas programmieren.
Es muss natürlich das jeweilige Element aktiv sein.
Gruß Daniel
AW: nur zur Info: API
04.09.2017 13:50:51
Fennek
Hallo,
mit Win-API sollte es möglich sein, es muss sich nur jemand finden, der den Code schreibt/aus dem Archiv holt.
mfg
Anzeige
Sinn dieser Abfrage ?
04.09.2017 16:43:51
robert
kwt
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für die Abfrage von Tastendruck in Excel


Schritt-für-Schritt-Anleitung

Um eine VBA-Lösung zur Abfrage von Tastendrücken zu erstellen, kannst du folgende Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projekt-Explorer auf "VBAProject (dein Arbeitsblattname)" und wähle Einfügen > Modul.

  3. Kopiere diesen Code in das Modul:

    Dim Tastenzähler As Collection
    Dim LetzteTaste As String
    Dim LetzteZeit As Double
    
    Sub StartTastenzähler()
       Set Tastenzähler = New Collection
       LetzteZeit = Timer
       Application.OnKey "5", "TasteGedrueckt"
       Application.OnKey "4", "TasteGedrueckt"
    End Sub
    
    Sub TasteGedrueckt()
       Dim AktuelleZeit As Double
       AktuelleZeit = Timer
    
       If AktuelleZeit - LetzteZeit < 1 Then
           Tastenzähler.Add Application.Caller
       Else
           MsgBox "Die Taste " & LetzteTaste & " wurde " & Tastenzähler.Count & " mal gedrückt."
           Tastenzähler.Clear
       End If
    
       LetzteTaste = Application.Caller
       LetzteZeit = AktuelleZeit
    End Sub
    
    Sub StopTastenzähler()
       Application.OnKey "5"
       Application.OnKey "4"
    End Sub
  4. Starte den Zähler: Führe die StartTastenzähler-Prozedur aus, um die Abfrage zu aktivieren.

  5. Beende den Zähler: Führe die StopTastenzähler-Prozedur aus, um die Abfrage zu stoppen.


Häufige Fehler und Lösungen

  • Problem: Der Makro funktioniert nicht.
    Lösung: Stelle sicher, dass die Makros in deiner Excel-Instanz aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros und aktiviere die Option „Alle Makros aktivieren“.

  • Problem: Die Tasten werden nicht gezählt.
    Lösung: Überprüfe, ob du die richtige Taste drückst und ob die StartTastenzähler-Prozedur korrekt ausgeführt wurde.


Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, könntest du auch ActiveX-Steuerelemente in einer Userform verwenden. Hierbei kannst du das KeyPress-Event von Textfeldern oder Labels nutzen, um Tastendrücke zu registrieren. Dies erfordert jedoch mehr Aufwand in der Gestaltung der Userform.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Abfrage für mehrere Tasten erweitern kannst:

Application.OnKey "A", "TasteGedrueckt"
Application.OnKey "B", "TasteGedrueckt"

Füge diese Zeilen in das StartTastenzähler-Sub ein, um die Tasten A und B ebenfalls zu zählen.


Tipps für Profis

  • Verwende eine Timer-Routine, um eine genauere Zeitmessung zu erhalten.
  • Integriere die Möglichkeit, verschiedene Tasten in einer GUI auszuwählen, um die Flexibilität zu erhöhen.
  • Experimentiere mit dem Application.OnKey-Befehl, um komplexere Tastenkombinationen zu überwachen.

FAQ: Häufige Fragen

1. Kann ich andere Tasten als 4 und 5 verwenden?
Ja, du kannst jede Taste verwenden, indem du den entsprechenden Buchstaben oder die Zahl in Application.OnKey angibst.

2. Wie kann ich die Ausgabe anpassen?
Du kannst den Inhalt der MsgBox in der TasteGedrueckt-Sub anpassen, um mehr Informationen anzuzeigen oder die Ergebnisse in einer Zelle zu speichern.

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