Office: (Office 2016) Control an Sub übergeben

Helfe beim Thema Control an Sub übergeben in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe in einem Formular mehrere Textfelder, deren Eingabe auf Richtigkeit geprüft werden soll. Entspricht der Wert nicht den angegebenen... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von PawelPopolski, 29. August 2020.

  1. Control an Sub übergeben


    Hallo,

    ich habe in einem Formular mehrere Textfelder, deren Eingabe auf Richtigkeit geprüft werden soll. Entspricht der Wert nicht den angegebenen Grenzen, soll eine Meldung erscheinen und der Focus auf das fehlerhafte Textfeld gesetzt werden.

    Also habe ich die Prüfung in eine Sub ausgelagert.

    Code:
    Mein Problem ist die Übergabe des Controls. Mit
    Code:
    übergebe ich ja nur 2 mal den Wert des Textfeldes.
    Wie mache ich es aber, dass das Textfeld angesprochen wird und eben nicht der Wert?

    :)
     
    PawelPopolski, 29. August 2020
    #1
  2. Suche mal nach ActiveControl...
     
    fraeser, 31. August 2020
    #2
  3. Möglichkeit 1: mach aus der Prozedur eine Funktion, die einen Rückgabewert liefert. Der könnte true oder false sein wenn die Prüfung erfolgreich war oder nicht. Alternativ kann es auch eine andere Wertart sein, die dann je nach Control einen definierten Wert zurück gibt.
    Möglichkeit 2: wenn die Sub im Formular definiert ist, hast Du alle Controls mit Me!Name_des_Controls im Zugriff und kannst den Focus setzen.

    Gruß
    Fred
     
    Fred_BS, 31. August 2020
    #3
  4. Control an Sub übergeben

    Moin,

    ich verzweifle langsam...und das am frühen Morgen :-)

    ich habe jetzt gefühlt jede Kombi Von ActiveControl in Verbindung mit Controls, Me.ctl etc. probiert aber das ist nichts anderes, als eine Ansammlung von hilflosen Versuchen, gekrönt von jeder Menge Fehler.

    Nehmen wir z.B. das hier:
    Code:
    In dem Moment, in dem ich Set ctrl ausführe, wird ctrl der Wert von ActiveControl zugewiesen. Gleiches passiert mit
    Code:
    Offensichtlich habe ich da was noch nicht verstanden.

    Was mich irritiert ist, dass ich im Netz Beispiele gefunden habe, in denen es ganz einfach zu funktionieren scheint.

    Wie auch immer, ich habe es jetzt folgendermaßen gelöst:
    Code:
     
    PawelPopolski, 31. August 2020
    #4
  5. Hallo,

    Du kannst natürlich auch beim Ereignis BeforeUpdate bei jedem Control, das Du prüfen willst, eine entsprechende Prüfung durchführen und dann Cancel auf True oder False setzen und den Focus auf das entsprechende Control setzen.

    Gruß
    Fred
     
    Fred_BS, 31. August 2020
    #5
  6. übergebe ich ja nur 2 mal den Wert des Textfeldes.
    Wie mache ich es aber, dass das Textfeld angesprochen wird und eben nicht der Wert?

    Hast du deinen obigen Code mal ausprobiert? - Er sollte exakt so funktionieren.

    Die Übergabe an das Long-Argument funktioniert deshalb, weil die VBA Runtime merkt, dass das Control als solches nicht zu dem Datentyp Long passt und dann versucht etwas brauchbares daraus zu machen. Dabei findet es die Default-Property des Controls, diese ist Value. Ein Variant lässt sich bei geeignetem Inhalt (Ganzzahl) durchaus in einen Long konvertieren. Genau das passiert.

    Für das zweite Argument (ctrl) ist keine Konvertierung nötig und es wird direkt das Control selbst übergeben.

    Deutlicher erkennbar wird das Ganze, wenn du selbst schon deinen Code expliziter formulierst:
    Call CheckPLZ(Me.txtWertUnten.Value, Me.txtWertUnten)

    Trotzdem ist die Parameterübergabe noch redundant. Das Value des Controls kannst du jederzeit abrufen, du musst also nicht unbedingt beides übergeben, das Control selbst reicht völlig aus.

    Code:
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  7. Natürlich habe ich es ausprobiert, sonst hätte es mich nicht hierher verschlagen :-)

    Ich habe es jetzt auch mal mit deinem Code versucht und die einzelnen Werte im Direktbereich aufgerufen. (siehe Bild)

    Im Formular steht der Cursor aber nach Ausführung im falschen Feld.

    Irritierender Weise zeigt debug.print activecontrol.name als Ergebnis das gewünschte Feld. Das macht mich noch irre :-)
     
    PawelPopolski, 31. August 2020
    #7
  8. Control an Sub übergeben

    Benutzer: Drückt [TAB] oder klick woanders hin.
    Access: Das aktuelle Feld wird aktualisiert. After_Update ausführen; incl SetFocus.
    Access: OK, alles erledigt. Jetzt setzen wir den Focus dorthin, wo der Benutzer hin wollte.

    Wenn du verhindern willst, dass das Feld verlassen wird, musst du das BeforeUpdate-Ereignis verwenden und die Aktualisierung ggfl. abbrechen (Cancel=True).
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  9. Na super :-)

    Das hätte ich vorher wissen müssen. Nun habe ich es anders gelöst, weiss aber für die Zukunft Bescheid.
    Danke.
     
    PawelPopolski, 31. August 2020
    #9
Thema:

Control an Sub übergeben

Die Seite wird geladen...
  1. Control an Sub übergeben - Similar Threads - Control Sub übergeben

  2. Microsoft ImageComboBox Control 6.0 (SP6)

    in Microsoft Excel Hilfe
    Microsoft ImageComboBox Control 6.0 (SP6): Hi Leute, ich habe folgendes Problem: Ich bin gerade dabei eine Liste zu erstellen, in der man Hotels eintragen und bewerten kann. Für die Bewertung würde ich gerne Smileys benutzen. Dafür habe...
  3. Bilddaten aus Speicher direkt ins Image control laden

    in Microsoft Access Hilfe
    Bilddaten aus Speicher direkt ins Image control laden: Hallo, ich möchte Bilddaten (Byte-Array) direkt vom Image control anzeigen lassen, jedoch ohne den Umweg der Erstellung eines BMP-Files und der Zuweisung des Bildpfades an das Bildelement. Ich...
  4. WindowsMediaPlayer Control erstellen und bearbeiten

    in Microsoft Excel Hilfe
    WindowsMediaPlayer Control erstellen und bearbeiten: Hallo Zusammen, ich möchte während der Runtime ein WindowsMediaPlayer-Control in meiner Userform erstellen und anpassen. Leider weiß ich nicht wie der Syntax aussehen muss. Im Anschluss möchte...
  5. Slider Control 6.0 einbinden

    in Microsoft Excel Hilfe
    Slider Control 6.0 einbinden: Liebe community, hoffentlich kann mir jemand bei folgendem Problem weiterhelfen: Ich habe in einem Projekt in diversen userforms mehrere Schieberegler vom Typ "Slider Control 6.0" eingebunden....
  6. Controls

    in Microsoft Access Hilfe
    Controls: Hallo, ich habe folgende Funktion geschrieben. Code: Public Sub setControl(inForm As String, inTag As String, inAttribut As Integer, inBoolean As Boolean) 'Setzt Attribute f?r bestimmte...
  7. Zugriff auf das FlexGrid Control

    in Microsoft Access Hilfe
    Zugriff auf das FlexGrid Control: Hallo Leute, ich habe Windows 10 Professional mit MC Access 2016 (32 BIT!!!). Wollte mich mal ein wenig mit dem "FlexGrid" beschäftigen. Die entsprechende Datei "MsFlexGrd.ocx" habe ich im...
  8. Wie vorgehen bei Bennung der Controls auf Multipages

    in Microsoft Excel Hilfe
    Wie vorgehen bei Bennung der Controls auf Multipages: Hallo Zusammen, ich hab ein Programm geschrieben welches aus mehren UF besteht. Jetzt möchte ich diese UF gern in einer UF mit mehreren Multipages zusammen führen. Bevor ich jetzt gleich...
  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