# VBA/Access: Trotz SetFocus springt der Cursor ins nächste Feld



## Alexander Klein (26. August 2004)

Hi.

Ich möchte in meiner Access-Anwendung (2002, DAO) per VBA die Eingabe der Jahreszahlen überprüfen lassen.

Nun, das klappt ja sehr schön, doch wenn ein Jahr, welches in der Zukunft liegt eingegeben wird, so soll die Eingabe gelöscht und der Cursor zur neuen Eingabe im Feld bleiben. Stattdessen springt der Cursor zum nächsten Feld.
Auch eine Schleife (do while) führte nicht zum Ergebnis, der Cursor springt immer zum nächsten Feld.
Was ist zu tun?

Schonmal DANKE für Eure Hilfe!

Alexander

P.S.:

Hier ist ein Code-Auszug:


```
Rem Prozedur zur Überprüfung von Jahreseingaben
Rem ===========================================

Private Sub Txt_Jahr_AfterUpdate()

Rem Bei _Change tauchten sogar Fehlermeldungen auf, wenn nur Zahlen 
Rem eingegeben wurden; daher _AfterUpdate gewählt.

Dim j As Date 'Variable zur Ermittlung des Jahres
j = Now 'heutiges Systemdatum, z.B. 26.08.2004

If Not IsNumeric(Txt_Jahr) Then
    MsgBox "Bitte nur Zahlen eingeben!"
    Txt_Jahr = ""
    Txt_Jahr.SetFocus
ElseIf Txt_Jahr > Format(j, "YYYY") Then
    Dim jj
    jj = Format(j, "YYYY") 'es wird nur 2004 ausgegeben
                
    Rem j = Format(j, "YYYY") gibt 26.06.1905 anstatt 2004 aus,
    Rem daher Hilfsvariable jj
                
                
                Txt_Jahr = ""
                Txt_Jahr.SetFocus 'Cursor springt trotzdem ins nächste Feld
    MsgBox Txt_Jahr & " ist größer als " & jj
End If
End Sub
```


----------



## Alex F. (27. August 2004)

Wenn ich dich richtig verstanden habe willst du das bei ENTER unter den Umständen das deine Funktion False meldet das kein Focus auf das nächste Feld gelegt wird 

Interessanter wäre dein Aufruf gewesen 

1. sollte im Ereignis Before Update passieren

2. besser noch du machst eine Funktion draus die dir False bzw. True liefer

dann nimmst du das Keydown Ereignis deiner Textbox 

BSP;
	
	
	



```
Private Sub Txt_Jahr_KeyDown(Keycode as Long)' oder so

If keyCode = VbKeyReturn or KeyCode = VbKeyTab then
        KeyCode = 0 
         if PruefeJahr then
               txtNächstesdingen.setfocus
         endif
endif
```


----------

