Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Feld im UF per VBA setFocus

Begonnen von Nicolo#22, Heute um 09:18:16

⏪ vorheriges - nächstes ⏩

Nicolo#22

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

Doming

Moin Nicolo,

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

Gruß
 Doming

Knobbi38

#2
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

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.