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

860to864: Keylogging im Textfeld

Forumthread: Keylogging im Textfeld

Keylogging im Textfeld
11.04.2007 17:30:33
pweksictul
Hi,
ich habe ein Textfeld, in das die Benutzer Text eingeben sollen. Das Textfeld ist mehrzeilig _ und nimmt viel Text auf. Ich logge alle Keys des Benutzers mit und dazu die Zeit, die zwischen den Keys vergeht, indem ich die folgende Methode anwende:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode  16 Then
Stopp(ZeichenNr) = Timer
Zeichen(ZeichenNr) = KeyCode
If Shift = 0 Then
Shift_Status(ZeichenNr) = False
Else: Shift_Status(ZeichenNr) = True
End If
Zeit(ZeichenNr) = Stopp(ZeichenNr) - Start(ZeichenNr)
ZeichenNr = ZeichenNr + 1
Start(ZeichenNr) = Timer
End If
End Sub

Das funktioniert recht gut. Wenn ich aber die Keys hinterher in ein Datenblatt schreiben will, dann funktioniert der folgende Code leider nicht für alle Zeichen.

If Shift_Status(ZeichenNr) = False Then
ActiveCell.Offset(0, 1).Value = LCase(Chr(Zeichen(ZeichenNr)))
Else: ActiveCell.Offset(0, 1).Value = UCase(Chr(Zeichen(ZeichenNr)))
End If

Bei den Zahlen (KeyCode 48-57) werden unabhängig von Shift immer nur die Zahlen ins Excel-Blatt geschrieben (also nicht !"§$%...). Bei den Umlauten und Satzzeichen bekomme ich andere Zeichen als im Textfeld.
Weiß jemand Rat?
Vielen Dank im voraus.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Keylogging im Textfeld
ransi
HAllo
Teste mal diesen code.
Evtl hilft dir dieser Ansatz weiter:
Option Explicit
Dim arr(1 To 65536, 1 To 2) As Variant
Dim a As Long


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    arr(a + 1, 1) = Timer
    arr(a + 1, 2) = Chr(KeyAscii)
    a = a + 1
End Sub

Private Sub TextBox1_LostFocus()
    Range("A1:B" & a + 1) = arr
    Erase arr
    a = 0
End Sub


ransi
Anzeige
AW: Keylogging im Textfeld
12.04.2007 11:48:00
pweksictul
Vielen Dank für den Code. Ich werde das mal ausprobieren. Die Idee mit dem Array ist auch eleganter.
AW: Keylogging im Textfeld
12.04.2007 14:02:18
pweksictul
Leider hilft mir
TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

nicht weiter, da ich auch die nicht druckbaren Zeichen mitloggen muss.
Ich verwende nun weiterhin
TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

und fange alle Zeichen vor dem Ausdruck ab. Geht auch.
Danke nochmal für die Tipps.
Anzeige
;

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