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

Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen

Forumthread: Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen

Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen
23.09.2025 17:50:20
Morris
Guten Tag zusammen,

ich benötige eine Abfrage der Tastendruckdauer durch den Nutzer mit Übergabe des Wertes an eine Variable. Oder anders formuliert möchte ich ein (weiteres) Makro starten, wenn die linke Maustaste länger als drei Sekunden gedrückt wird. Ist das möglich und wenn ja, wie realisiere ich das am "einfachsten".

Vielen Dank den Helfenden

Gruß
Morris
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen
23.09.2025 18:12:39
daniel
Hi
wenn du dabei auf ein eine Button (ActiveX, Userform) klickst hättest du die beiden Events MouseDown und MouseUp.
MouseDown ist der Beginn des Klicks und MouseUp ist das Ende des Klicks (loslassen)

wenn du im MouseDown die Zeit (Funktion TIMER) in eine Modulweit gültige Variable schreibst, dann kannst du dann diesen Wert mit dem aktuellen Zeitwert des MouseUp-Events vergleichen und die Länge des Mausdrucks ermitteln.

ein Code, der dir anzeigt wie lange der Button mit der Maus angeklickt wurde, könnte so aussehen:

Option Explicit

Dim Zeit As Single
Dim Taste As Long



Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Zeit = Timer
Taste = Button
End Sub

Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MsgBox "die Taste " & Taste & " wurde: " & Timer - Zeit & " Sekunden gehalten."
End Sub


Gruß Daniel

ps: Achtung: wenn es möglich ist, dass der Button über Mitternacht gedrückt wird, müsste man die Zeit mit Datum sichern, weil um Mitternacht der Timer zurückgesetzt wird.
Anzeige
AW: Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen
26.09.2025 18:33:12
Morris 1981
@ Daniel: Danke für deine Antwort. Ich hatte mich dann wohl doch etwas zu ungenau ausgedrückt und versuche, meine Frage etwas zu präzisieren.

Ich suche eine Möglichkeit, beim klicken in eine beliebige Zelle ein makro zu starten, welches den aktuellen Zustand der linken Maustaste "ausliest" oder anders formuliert, selektiere ich Zelle A1 durch einen Klick mit der Maus, soll mir das makro sagen, ob die linke Maustaste für die Auswahl der Zelle genutzt wurde und wenn ja, wie lange die Taste gedrückt war. Ist die erste Bedingung erfüllt und der User hält die Maustaste länger als 3 Sekunden gedrückt, soll der Rest der Zeile ausgewählt und mittels Maus (Taste ist noch gedrückt) die darin vorhandenen Daten an eine andere Position verschoben werden. Kurz zum Hintergrund: ich möchte eine vorhandene Sortierung "umsortieren" und z.B. die erste Zeile A:A in eine andere Zeile (D:D) verschieben. Zeile B:B soll dann an die Stelle von A hoch rutschen usw. Ein kurzer Klick soll lediglich die einzelne Zelle markieren, ein langer Klick die ganze Zeile. Über ein Steuerelement geht das, geht's aber auch ohne?
Anzeige
AW: Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen
26.09.2025 19:39:52
daniel
hi
wenn du die ganze Zeile markieren willst, dann klicke doch auf die Zeilenköpfe am am linken Rand.
dann Zeile ausschneiden und Einfügen, das läuft über das Kontextmenü. Nutze das.
Klickzeiten auf Zellen usw kannst du mit Standard-VBA nicht so einfach abfragen, da müsstest du tiefer in die Programmierung eintauchen, als es für VBA vorgesehen ist.
Gruß Daniel
Anzeige
AW: Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen
23.09.2025 19:52:32
xlKing
Hi,

worauf zeigt denn der Cursor wenn du die Maustaste drückst? Und was soll passieren, wenn diese weniger als 3 Sekunden gedrückt wird?

Falls der Cursor auf ein Shape zeigt (z.B. ein Rechteck) dann weise diesem Shape das erste Makro (hier "LMausDown") zu und führe diesen Code aus, der dann nach 3 Sekunden das zweite Makro aufruft. (Achtung: Mit Buttons funktioniert das nicht, die lösen erst aus, wenn die Maustaste wieder oben ist.)

Private Declare PtrSafe Function Tastendruck Lib "user32.dll" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

Dim Abbruch As Boolean

Sub LMausDown()

Start = Timer
Abbruch = False

Do
DoEvents
If Timer >= Start + 3 Then Makro2
Loop Until Tastendruck(vbKeyLButton) = False Or Abbruch = True 'entspricht LMausUp

End Sub

Sub Makro2()

MsgBox "Die linke Maustaste wurde länger als 3 Sekunden gehalten."
Abbruch = True
End Sub


Gruß Mr. K.
Anzeige
AW: Wie kann ich die Dauer eines Tastendrucks (Maus) auslesen
26.09.2025 18:49:27
Morris 1981
@xlKing:
Auch dir danke für deine Antwort. Ich möchte ohne Shapes oder Steuerelemente arbeiten. Mir schwebt vor, über über das worksheet change_event, sofern hier auch bereits das reine Selektieren ohne Änderung des Zellinhalts erkannt werden kann (hier fehlt mir die Fachkenntnis) ein Makro zu starten, das mir bei Auswahl einer Zelle in einem definierten Zellbereich (1:1) durch Auswahlklick mit der Maus sagt "Zelle wurde mit der Maus ausgewählt und die linke Taste ist nach 3 Sekunden immer noch gedrückt. Wenn die Bedingung erfüllt ist, soll die gesamte Zeile der ausgewählten Zelle markiert werden. Anschließend könnte ich über eine Abfrage oder Userform eine Eingabe einfordern, an welche Stelle die Zeile verschoben werden soll. Optimal wäre, wenn ich sie einfach mit der gedrückten Taste verschieben könnte. Kurz um, ich möchte eine Sortierung individuell "nachsortieren". Bsp. Der Name Xavier soll an die erste Stelle rücken, Berta in Zeile 7 (statt 2) und danach bzw. davor geht's wie gewohnt mit A-Z weiter.

Hat du eine Idee?
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18