Autotab bei der Eingabe

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Sie kennen das von den Dialogen zur Eingabe von Registrierungsschlüsseln: Sie geben den ersten Fünferpack des Schlüssels ein und der Fokus springt dann automatisch zum folgenden Feld, wo Sie den nächsten Fünferpack eingeben können. Dieses Verhalten wollen wir einmal nachbilden. Dieser Beitrag zeigt, wie das durch den geschickten Einsatz von Ereignisprozeduren leicht gelingt.

Formular erstellen

Als Erstes erstellen wir ein Formular namens frmKeys, dem wir die fünf Textfelder txtKey1, txtKey2, txtKey3, txtKey4 und txtKey5 hinzufügen. Dazwischen platzieren wir jeweils ein Minuszeichen (s. Bild 1).

Das Formular frmKeys in der Entwurfsansicht

Bild 1: Das Formular frmKeys in der Entwurfsansicht

Vorgaben

Was geschieht nun Optimalerweise gibt der Benutzer nacheinander die 25 Zeichen des Keys ein. Dabei wollen wir dafür sorgen, dass immer nach Eingabe von fünf Zeichen ein automatischer Sprung zum nächsten Textfeld erfolgt. Das erledigen wir etwa für das erste Textfeld mit der Prozedur, die durch das Ereignis Bei Taste auf ausgelöst wird und die wir wie folgt füllen:

Private Sub txtKey1_KeyUp(KeyCode As Integer, _
         Shift As Integer)
     If Len(Me!txtKey1.Text) = 5 And _
             Me!txtKey1.SelStart = 5 Then
         Me!txtKey2.SetFocus
     End If
End Sub

Wenn Sie nun fünf Zeichen in das erste Textfeld eingeben, landet die Einfügemarke wie in Bild 2 im zweiten Textfeld. Die If…Then-Bedingung in der Prozedur prüft, ob die Anzahl der Zeichen im Textfeld txtKey1 dem Wert 5 entspricht und ob sich die Einfügemarke an der letzten Position befindet. In diesem Fall wird der Fokus auf das zweite Textfeld txtKey2 verschoben.

Verschieben des Fokus in Aktion

Bild 2: Verschieben des Fokus in Aktion

Diese Prozedur könnten wir nun für die ersten vier Textfelder duplizieren. Allerdings wollen wir dies gleich ein wenig refaktorieren, indem wir die Anweisungen innerhalb der Prozedur in eine eigene Prozedur auslagern, der wir nur noch die Nummer aus der Bezeichnung des Textfeldes übergeben. Die Prozedur txtKey1_Up sieht danach etwa so aus:

Private Sub txtKey1_KeyUp(KeyCode As Integer, _
         Shift As Integer)
     KeyUp KeyCode, Shift, 1
End Sub

Hier wird also die Prozedur KeyUp aufgerufen, der wir neben den Parametern der aufrufenden Ereignisprozedur noch die Nummer der Textbox übergeben, welche das Ereignis auslöst. Für die folgenden vier Textboxen sieht die entsprechende Ereignisprozedur ähnlich aus, nur mit einem anderen Wert für den letzten Parameter.


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar