Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Nicolo#22 am August 19, 2026, 09:18:16

Titel: Feld im UF per VBA setFocus
Beitrag von: Nicolo#22 am August 19, 2026, 09:18:16
Guten Morgen liebe Experten
Seit Stunden scheitere ich an einem für euch sicher simplen Fehler.
Aus ein HF mit einem UF wird mit VBA der Focus auf das erste vorhandene Feld gesetzt.
Das ist der Codeteil der dieses macht.
With subFrmKostenartKontoUfo
    .Form.PositionToLastRecord
    subFrmKostenartKontoUfo.SetFocus
  End With
  End Sub

Ich möchte aber den Focus in das Feld mit der Bezeichnung txtBuchDatum haben, aber in einem NEUEN Datensatz, nicht im LETZTEN.
Das wäre der Codeabschnitt dazu:
  With subFrmKostenartKontoUfo
    .Form.PositionToLastRecord
    subFrmKostenartKontoUfo.txtBuchDatum.SetFocus
  End With
  End Sub
Aber der erzeugt eine Fehlermeldung DATENOBJEKT NIVHT GEFUNDEN
Obwohl die Schreibweise des Feldes korrekt ist. Das Feld ist ein Datumsfeld.

Habe jeweils nur den entsprechenden Codeteil eingefügt.
Die kpl. Codes stammen von Knobbi38 glaube ich.

VG
Titel: Re: Feld im UF per VBA setFocus
Beitrag von: Doming am August 19, 2026, 12:20:57
Moin Nicolo,

versuch mal
  With Me!subFrmKostenartKontoUfo.Form
    .SetFocus
    DoCmd.GoToRecord , , acNewRec
    .Controls("txtBuchDatum").SetFocus
  End With

Gruß
 Doming
Titel: Re: Feld im UF per VBA setFocus
Beitrag von: Knobbi38 am August 19, 2026, 12:37:40
ZitatsubFrmKostenartKontoUfo.txtBuchDatum.SetFocus
Damit adressierst du irgendetwas, aber bestimmt kein Feld in einem Unterformular! Hier ist nochmal alles erklärt:
https://msofficeinside.blogspot.com/2017/12/access-fokus-auf-das-erste-mogliche.html (https://msofficeinside.blogspot.com/2017/12/access-fokus-auf-das-erste-mogliche.html)

Wichtig ist die Reihenfolge:
' 1. Fokus auf das Unterformular-Steuerelement setzen
Me.NameDesUnterformularSteuerelements.SetFocus

' 2. Im Unterformular zu einem neuen Datensatz springen
DoCmd.GoToRecord , , acNewRec

' 3. Fokus auf das gewünschte Feld im neuen Datensatz setzen
Me.NameDesUnterformularSteuerelements.Form.NameDesFeldes.SetFocus
Allerdings sollte man dafür besser eine Prozedur im UF schreiben, welche dann vom HF aus aufgerufen wird - das wäre dann eine sauberere Lösung. Bitte verwende dann im UF anstatt DoCmd.GotoRecord besser DoCmd.RunCommand acCmdRecordsGoToNew, damit das Fokushandling stabiler funktioniert.

Knobbi38

PS:
verwende bitte die üblichen Namenskonventionen und für das SubForm-Steuerelement und das darin geladene Formular unterschiedliche Präfixe. Das Hilft anderen, den Code besser lesen zu können und vermeidet Folgefehler.