Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Bei Taste UP und DOWN im Feld verbleiben

Begonnen von itwebmaster, März 28, 2025, 15:08:33

⏪ vorheriges - nächstes ⏩

itwebmaster

Ich habe ein Feld in bei dem der Zeitraum im Format MM.JJJJ bei den Tasten UP und DOWN hoch bzw. runtergezählt wird, das funktioniert mit folgendem Code super:
Private Sub Zeitraum_KeyUp(KeyCode As Integer, Shift As Integer)
On Error Resume Next
'MsgBox "Tastencode=" & KeyCode
'38 nach oben
'40 nach unten

oldDate = DateValue("1." & Me.Zeitraum)

Debug.Print oldDate

Select Case KeyCode
    Case Is = 38
        Me.Zeitraum = Format(DateAdd("m", 1, oldDate), "mm.yyyy")
        myoldvalue = Null
        Me.Zeitraum.SetFocus
    Case Is = 40
        Me.Zeitraum = Format(DateAdd("m", -1, oldDate), "mm.yyyy")
        Me.Zeitraum.SetFocus
        myoldvalue = Null
    Case Is = 80
        myoldvalue = Me.Zeitraum
        DoCmd.RunCommand acCmdQuickPrint
        'Me.Zeitraum = Me.Zeitraum.OldValue
    Case Else
        'MsgBox "Sie haben die Taste mit dem Tastencode " & KeyCode & " gedrückt."
End Select
Me.Zeitraum.SetFocus
End Sub
Leider muss ich immer wieder in das Feld zurückspringen. Die Methode SetFocus bringt leider nichts. Hat jemand eine Idee?

Knobbi38

1. Du solltest nur aus wichtigem Grund in das Fokushandling eines Formulars eingreifen und außerdem ist das hier gar nicht notwendig - man "konsumiert" einen Tastendruck, in dem man dem KeyCode eine 0 zuweist. Damit wird die weitere Verarbeitung von Up/Down unterdrückt.

2. Schau dir nochmal die Syntax von Select Case an. Ein "Case is = 38"  ist hier ebenfalls nicht notwendig. Es reicht ein einfaches "Case 38".

3. Key-Ereignisroutinen sollten möglichst kurz sein. Deshalb gehört da auch kein Msgbox oder Docmd.RunCommand rein.


Beaker s.a.

Hallo,

Was Ulrich meint ist, in den Cases brauchst du kein .SetFocus, du hast es
ja am Ende der Prozedur.
Dieses ersetzt du aber mit
KeyCode = 0und der Cursor bleibt wo er ist.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)