Office: (Office 2010) SetFocus wieder auf das gleiche Feld

Helfe beim Thema SetFocus wieder auf das gleiche Feld in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; So, alles probieren und die Forensuche hat nix geholfen. Bevor ich nun an diesem an sich banalen Problem verzweifle, frage ich lieber mal hier: Ändert... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von swelz, 25. Januar 2014.

  1. SetFocus wieder auf das gleiche Feld


    So, alles probieren und die Forensuche hat nix geholfen. Bevor ich nun an diesem an sich banalen Problem verzweifle, frage ich lieber mal hier:

    Ändert der Anwender in einem Formular den Wert (value) eines Steuerelements, so muss er zwingend auch den Wert eines weiteren ändern. Solange er das nicht getan hat, darf dieses weitere Feld nicht verlassen werden.
    Ich versuche, das mit folgendem Code zu erreichen:

    Code:
    ... und das funktioniert nicht.

    Fehler:
    Laufzeitfehler 2108: "Sie müssen das Feld erst speichern ... bevor Sie die SetFocus-Methode ausführen können". Speichern ist nun das, was ich eben nicht will.

    Lasse ich das SetFocus weg, springt der Cursor in das nächste Eingabefeld anstatt wieder in das selbe Feld.

    Was mache ich falsch.

    Zu erwähnen wäre noch, dass ich diese Formularfunktion nicht im Klassenobjekt aufrufe, sondern in einem Modul. In der Stuerelementeigenschaft "BeforeUpdate" ist eingetragen:
    "=txtBIC_BeforeUpdate(0;[Screen].[Activeform];[Screen].[ActiveForm].[activecontrol]) "

    :)
     
  2. Moin, ich blick da ehrlich gesagt nicht durch durch deine Beschreibung. Welches Steuerelement hat jetzt die Funktion im Ereignis BeforeUpdate hat und welches ist das aktuelle und ...
    Annahme ist doch:
    Wenn IBAN geändert dann muss auch BIC verändert werden,
    wenn BIC geändert, dann muss auch IBAN verändert werden.
    Oder?
    Dann würde ich das im BeforeUpdate-Ereignis des Formulars prüfen:
    Code:
    maike
     
  3. Maike, danke für deine Antwort.

    Ich versuche, es anders zu erklären:
    wenn IBAN geändert wird, muss BIC auch geändert werden. Das Steuerelement txtBIC wird nur aktiviert, wenn IBAN geändert wurde und soll auch nur in diesem Fall den Focus erhalten.
    Wurde in txtBIC verlassen, muß geprüft werden, ob sich der Wert geändert hat. Ich der Wert nicht geändert (oder ungültig), soll txtBIC den Focus behalten; das Feld also nicht verlassen werden dürfen, bis eine andere BIC eingegeben oder die Bearbeitung abgebrochen wurde.
    Deshalb auch das BeforeUpdate-Ereignis bei txtBIC und nicht beim Formular.
     
  4. SetFocus wieder auf das gleiche Feld

    Ok, verstanden. Prozedur im Formularmodul (ungetestet):
    Code:
     
  5. Hallo, Code:
    der Abbruch des BeforeUpdate-Ereignisses bewirkt u.a., dass das Feld nicht verlassen wird bzw. werden kann.
    Das Setzen des Fokus - wohin auch immer - ist dann nicht möglich und resultiert in einem Fehler.
     
    Anne Berg, 28. Januar 2014
    #5
  6. AFAIK muss man doch das Exit-Ereignis des Feldes in Verbindung mit Cancel verwenden um ein Verlassen des Feldes zu verhindern. Das BeforeUpdate verhindert doch nur das Speichern, aber das Feld kann doch verlassen werden ?!
     
  7. Nein, es läuft doch immer wieder aufs Canceln hinaus, aus der Nummer kommst du nicht raus! *tongue.gif*
    ...solange die Bedingung nicht erfüllt wird, versteht sich.
     
    Anne Berg, 29. Januar 2014
    #7
  8. SetFocus wieder auf das gleiche Feld

    Hallo, musste einige Tage pausieren und bin jetzt wieder an dem alten Problem.
    der Abbruch des BeforeUpdate-Ereignisses bewirkt u.a., dass das Feld nicht verlassen wird bzw. werden kann.
    Das Setzen des Fokus - wohin auch immer - ist dann nicht möglich und resultiert in einem Fehler.

    Das wäre ja genau das, was ich möchte:
    das BeforeUpdate abbrechen und zurück in's aktuelle Control. Und wenn das SetFocus zu einem Fehler führt, habe ich es eben weggelassen - ich brauch's ja auch nicht, wenn das aktuelle Feld ohnehin nicht verlassen werden kann.
    Mein Code sieht jetzt also so aus:
    Code:
    Allein, es funktioniert nicht: das aktuelle Control "txtBIC" wird verlassen, obwohl ctlAktuell.Value = ctlAktuell.OldValue ist und damit "Cancel = True" ausgeführt wird.

    Ich werde mal Smaugs Ansatz mit dem Exit-Ereignis weiter verfolgen.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  9. Du musst schon die Original-Ereignisprozedur verwenden, die kannst du nicht einfach um eigene Parameter erweitern.

    ...das sollte der Compiler dir eigentlich schon gesagt haben.
     
    Anne Berg, 5. Februar 2014
    #9
  10. Nö, der Compiler meckert nicht. Wahrscheinlich weil ich die Funktion nicht im Klassenmodul aufrufe?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  11. Außerhalb einer Ereignisprozedur hat Cancel keinerlei Auswirkung.
     
    Anne Berg, 5. Februar 2014
    #11
  12. OK, danke Anne
    Und wie wäre das dann außerhalb einer Ereignisprozedur zu lösen?
    - Eingabefeld aktivieren und SetFocus drauf,
    - Eingabe prüfen und
    - solange Eingabe ungültig darf das Feld nicht verlassen werden, es sei denn, der alte Feldinhalt wird wieder hergestellt.
     
  13. SetFocus wieder auf das gleiche Feld

    Code:
    Code:
    Ich weiß nicht, wieso du das partout außerhalb einer Ereignisprozedur haben willst. Aber wenn schon, dann nenn die Funktion wenigstens nicht genauso wie eine solche.
    maike
     
  14. Hallo Maike, danke.
    An diesem Ansatz mache ich grad auch rum. So könnte es klappen.

    Warum außerhalb einer Ereignisprozedur?
    Nun, ich bin flexibler; kann die eigentliche Prüffunktion mehrfach verwenden; die Trennung von Form und Code läßt sich leichter pflegen (gleiches Form-unterschiedlicher Code). Hab bisher eigentlich wenig negative Erfahrungen damit gemacht. Manches ist zwar umständlicher und dauert erst mal länger in der Entwicklung, aber ich finde, das rechnet sich.

    Nochmal danke, ich melde mich noch mit Feedback zum Lösungsansatz.
     
  15. Jo, so klappt das!
    Danke allen!
     
Thema:

SetFocus wieder auf das gleiche Feld

Die Seite wird geladen...
  1. SetFocus wieder auf das gleiche Feld - Similar Threads - SetFocus gleiche Feld

  2. Buchsatz mit Word: untere Zeile der Seiten immer auf der gleichen Höhe

    in Microsoft Word Hilfe
    Buchsatz mit Word: untere Zeile der Seiten immer auf der gleichen Höhe: Ich versuche gerade, mein Buch mit MS Office Professional PLUS möglichst professionell zu setzen. Das Vermeiden von einsamen Einzelzeilen am Beginn oder am Ende von Seiten verhindert Word...
  3. konti aufzählung und wert gleicher konti zusammenfassen

    in Microsoft Excel Hilfe
    konti aufzählung und wert gleicher konti zusammenfassen: hallo ich möchte eine automatische konti aufzählung aller gleichen konti und gleichzeitig die werte gleicher konti zusammenfassen (rot sind die zahlen, welche ich errechnen lassen möchte) danke...
  4. Textbox1.Setfocus funktioniert nicht

    in Microsoft Excel Hilfe
    Textbox1.Setfocus funktioniert nicht: Hallo Leute, ich programmiere hier gerade seit 2 Tagen ein Excel-AddIn für einen Kunden (Excel 2003, SP3). In einem UserForm habe ich eine Datumsauswahl per Textbox txtDatumVon bzw. alternativ...
  5. SetFocus fokussiert nicht

    in Microsoft Access Hilfe
    SetFocus fokussiert nicht: Hallo, ich rufe nach der Eingabe eines Wertes in einem Formular über das AfterUpdate Event folgende Prozedur auf: Code: Sub OoR(frm As Form, field As Control) 'Prüfen ob Wert Out of Range Dim max...
  6. SetFocus geht nicht

    in Microsoft Access Hilfe
    SetFocus geht nicht: Hallo @ll, noch im alten Jahr stehe ich wieder mal auf dem Schlauch :-( Ich habe ein Formular und möchte mir einen Bericht anzeigen, dies klappt ja einwandfrei, aber wenn der Bericht geschlossen...
  7. .SetFocus funktioniert nicht

    in Microsoft Access Hilfe
    .SetFocus funktioniert nicht: Aus irgendeinem - mir nicht erfindlichen - Grund funktioniert plötzlich das Setzen des Fokus auf ein ungebundenes Textfeld in einem Formularfuß nicht mehr. Ich setze diesen Befehl im Lost_Focus...
  8. Formular, SetFocus wird nicht gesetzt (2 Varianten)

    in Microsoft Access Hilfe
    Formular, SetFocus wird nicht gesetzt (2 Varianten): Hallo, Ausgangslage: Formular mit 2 Textfeldern Problem: nachdem in Textfeld1 der String eingefügt ist, lässt sich der Fokus nicht auf das Textfeld2 verschieben. Sozusagen ein...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden