Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

860to864: 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.

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.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige