Supportnet / Forum / Datenbanken
zum nächsten Textfeld springen per vba
Frage
hallo zusammen,
habe ein endlosformular bei dem 31 textfelder aneinander gereit sind.
such eine vba-funktion die ab der zelle die den fokus besitzt die nächste zelle des selben datensatzes (in der aktivierungsreihenfolge der textfelder) anspringt um dort einen wert einzugeben, dann abermals die nächste zelle anspringt, usw. bis eine vorgegebene anzahl (z.B. 4x) abgearbeitet ist.
oder kurz gesagt eine TAB-funktion über vba (gehe zum nächsten textfeld)
danke im voraus
roland
Antwort 1 von oliverV
Hallo Roland,
wann soll diese Aktion ausgeführt werden, also bei welchem Ereignis ?
Sind es immer die gleichen 4 Felder von denen du den Focus in ein anderes Feld setzen willst ?
Sind es immer die gleichen 4 Felder die den Focus erhalten sollen ?
Und die größte Frage, was soll das – also was ist der Hintergrund ?
Gruß
Oliver
wann soll diese Aktion ausgeführt werden, also bei welchem Ereignis ?
Sind es immer die gleichen 4 Felder von denen du den Focus in ein anderes Feld setzen willst ?
Sind es immer die gleichen 4 Felder die den Focus erhalten sollen ?
Und die größte Frage, was soll das – also was ist der Hintergrund ?
Gruß
Oliver
Antwort 2 von rolandaa
hallo oliver,
handelt sich um eine anwesenheitsliste, bei der ein feld zwischen dem 1. und 31. tag den fokus erhält bzw markiert wird, anschließend erscheind ein kleines formular in dem ein wert z.b. "T" für urlaub und die anzahl der tage z.b. "5" eingegeben wird.
auf knopfdruck OK wird einschließlich dem markierten tag und den darauf folgenden 4 tagen der wert "T" in die textfelder eingetragen.
wo nun mein problem liegt, ihm zu sagen er soll in das nächste feld (aktivierungsreihenfolge) gehen.
gruß
roland
handelt sich um eine anwesenheitsliste, bei der ein feld zwischen dem 1. und 31. tag den fokus erhält bzw markiert wird, anschließend erscheind ein kleines formular in dem ein wert z.b. "T" für urlaub und die anzahl der tage z.b. "5" eingegeben wird.
auf knopfdruck OK wird einschließlich dem markierten tag und den darauf folgenden 4 tagen der wert "T" in die textfelder eingetragen.
wo nun mein problem liegt, ihm zu sagen er soll in das nächste feld (aktivierungsreihenfolge) gehen.
gruß
roland
Antwort 3 von oliverV
Hallo Roland,
ich habe mir die Geschichte heute morgen noch mal angeschaut, habe aber leider keine wirkliche Lösung.
Mit
wechselst du zu einem Steuerelement, das du aber namentlich benennen musst (also nicht zum nächsten).
Mit
[Code]
Me.Ctl12.SetFocus
bzw.
Forms!Formularname.Ctl12.SetFocus
gibst du einem Feld den Focus.
Mit
kannst du den z.Zt. focusierten Steuerelementnamen abfragen.
Schau dir mal in der VB-Onlinehilfe die Do…Loop-Anweisung an, evtl. kannst du die Anweisung (das Setzten des „T’s“) in eine Schleife packen; führe diese Anweisung aus, solange Me.Urlaubstage < Zähler.
Den benötigten Feldnamen für deine Anweisung kannst du dir sicher zusammenbauen, denn ich gehe mal davon aus, das die Namen so was wie „Tag19“ sind; dann verwende für das Startfeld z.B. „Tag“ & Zählvariable.
Grundsätzlich ist es wohl auch eine Überlegung wert, ob du das Ganze nicht mit einer Aktualisierungsabfrage und einem Formular.Requery einfacher lösen kannst, als mit einer „gesteuerten“ Formulareingabe.
Wie gesagt, leider nicht „die“ Lösung, aber vielleicht der eine oder andere Denkanstoß.
Gruß + schönes WE
Oliver
PS Kann dir z.Zt. nicht mehr weiterhelfen, da ich kurz vorm Urlaub stehe; also bitte jemand anderes „übernehmen“.
ich habe mir die Geschichte heute morgen noch mal angeschaut, habe aber leider keine wirkliche Lösung.
Mit
DoCmd.GoToControl "Steuerelementname"
wechselst du zu einem Steuerelement, das du aber namentlich benennen musst (also nicht zum nächsten).
Mit
[Code]
Me.Ctl12.SetFocus
bzw.
Forms!Formularname.Ctl12.SetFocus
gibst du einem Feld den Focus.
Mit
Screen.ActiveForm.ActiveControl.Name
kannst du den z.Zt. focusierten Steuerelementnamen abfragen.
Schau dir mal in der VB-Onlinehilfe die Do…Loop-Anweisung an, evtl. kannst du die Anweisung (das Setzten des „T’s“) in eine Schleife packen; führe diese Anweisung aus, solange Me.Urlaubstage < Zähler.
Den benötigten Feldnamen für deine Anweisung kannst du dir sicher zusammenbauen, denn ich gehe mal davon aus, das die Namen so was wie „Tag19“ sind; dann verwende für das Startfeld z.B. „Tag“ & Zählvariable.
Grundsätzlich ist es wohl auch eine Überlegung wert, ob du das Ganze nicht mit einer Aktualisierungsabfrage und einem Formular.Requery einfacher lösen kannst, als mit einer „gesteuerten“ Formulareingabe.
Wie gesagt, leider nicht „die“ Lösung, aber vielleicht der eine oder andere Denkanstoß.
Gruß + schönes WE
Oliver
PS Kann dir z.Zt. nicht mehr weiterhelfen, da ich kurz vorm Urlaub stehe; also bitte jemand anderes „übernehmen“.

