Neuigkeiten:

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

Mobiles Hauptmenü

.SetFocus funktioniert nur mit MsgBox

Begonnen von KonradR, Januar 19, 2025, 11:39:46

⏪ vorheriges - nächstes ⏩

KonradR

Hallo liebe Accessfreunde,

Ich habe eine If - Then - Else Verzweigung geschrieben und möchte, dass beim Erfüllen der Bedingungen das Undo-Ereignis (Rückgängigmachen der Dateneingabe bzw. Drücken der ESC-Tase) erfolgt und ein Textfeld auf einem Unterformular den Fokus erhält. Leider funktioniert das nur, wenn ich die hier im Code aufgeführt MsgBox mit aufgeführten Inhalt verwende. Sonst ist der Fokus im benannten Textfeld nicht zu sehen.
Hier der Code:

    If RezGewicht0 = 0 Or rcsZugabeEinheit.Fields("rezgeGewicht").Value = 0 Then
        Me.Undo
    End If
     
    Me.Controls("sfrmRezepGeE").SetFocus
    Me.Controls("sfrmRezepGeE").Controls("txtRezGewicht").SetFocus
   
    MsgBox ActiveControl.Name
End Sub

Habt ihr eine Idee, woran das liegen könnte?

Beaker s.a.

Versuche es beim Ereignis "Vor Aktualisierung" (Control_ oder Form_)
und setze "Cancel" zusätzlich zum "Undo" auf "True".
Bei "Control_BeforeUpdate" bleibt dann der Focus autom. in dem Feld,
"SetFocus" ist dann also unnötig. Bei "Form_BeforeUpdate" sollte der
Focus auch ohne Msgbox gesetzt werden.
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)

KonradR

Hallo Beaker s.a.,

Zitat von: Beaker s.a. am Januar 19, 2025, 12:45:20und setze "Cancel" zusätzlich zum "Undo" auf "True".

Danke. Das war die Lösung. Es funktioniert.

knobbi38

Hallo,

btw. wenn du hiermit
Me.Controls("sfrmRezepGeE").Controls("txtRezGewicht").SetFocus
den Fokus auf ein Control im UF setzen möchtest, wäre das falsch, es fehlt die Form-Eigenschaft:
Me.Controls("sfrmRezepGeE").Form.Controls("txtRezGewicht").SetFocus


Aus der Angabe "Me.Controls("sfrmRezepGeE")" entnehme ich, daß dein Subform-Control den gleichen Namen verwendet, wie dein UF. So etwas solltest du ändern und dein SubForm-Control umbenennen, z.B. "subContainer".

Gruß
Knobbi38