Office: VBA Formulareingaben prüfen

Helfe beim Thema VBA Formulareingaben prüfen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Falls die Steuerelemente tatsächlich eine fortlaufend Nummerierung haben, kann man den Code trotzdem noch etwas vereinfachen, indem man die Nummer in... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von sven78hh, 29. April 2012.

  1. fette Elfe Erfahrener User

    VBA Formulareingaben prüfen


    Hallo Karin,
    die Version gefällt mir persönlich noch am allerbesten.
    Allerdings kann man da auch noch eine Kleinigkeit vereinfachen. ;)
    Anstatt:
    Code:
    Private Sub CheckBox1_Click()
        CheckBoxPingPong CheckBox1.Tag
    End Sub
    folgendes:
    Code:
    Private Sub CheckBox1_Click()
        CheckBoxPingPong ActiveControl.Tag
    End Sub
    Dann wird die aufrufende Zeile universell für alle Controls, muss nicht bei jedem angepasst werden, sondern kann per Copy/Paste eingefügt werden.




    Ganz meine Meinung. :)



    Öhm... wie jetzt?
    :D:D:D
     
    fette Elfe, 1. Mai 2012
    #16
  2. sven78hh
    sven78hh Erfahrener User
    Hallo ihr Zwei,

    ich habe mich gestern und heute mit eurem Code beschäftigt. Allerdings habe ich noch Fragen :-(

    Folgenden Code habe auf GRund eurer Vorlage erstellt:

    Code:
    Private Sub CheckBox1_Click()     CheckBoxPingPongGross CheckBox1.Tag End Sub
    Private Sub TextBox1_Change()     CheckBoxPingPongGross TextBox1.Tag End Sub
    
    Ich glaube das Verstehe ich noch nicht wie ".Tag" und "strNummer" zueinander finden...
    Ich erstelle eine Sub und übergebe mit Tag ein Parameter. Bei mir sieht es dann so aus:

    Code:
    Private Sub cbGross1_Change()     CheckBoxPingPong cbGross1.Tag End Sub
    
    Das ganze mache ich für jede Checkbox. (cbGross 1 bis cbGross n)

    Code:
    Private Sub txtKurzGross1_Change()      CheckBoxPingPong txtKurzGross1.Tag  End Sub
    
    Das ganze mache ich für jedes Textfeld. (txtKurzGross 1 bis txtKurzGross n)


    Code:
    Private Sub LabGrossOK1_Change()     CheckBoxPingPong LabGrossOK1.Tag End Sub
    
    Das ganze mache ich für jedes Label. (LabGrossOK 1 bis LabGrossOK n)


    Code:
    Private Sub LabGrossFehler1_Change()     CheckBoxPingPong LabGrossFehler1.Tag End Sub
    
    Das ganze mache ich für jedes Label. (LabGrossFehler 1 bis LabGrossFehler n)

    Die Tags sind entsprechend der Formularfelder benannt (cbGross hat z.B, den Tag 1)
    Das habe ich im Formulareditor (eigenschaftenfenster eingestellt.

    Unter meinen ganzen Sub's für die Textfelder, Checkboxen und Label habe ich diesen Code:

    Code:
    Public Sub CheckBoxPingGross(strNummer As String)    Me.Controls("LabGrossOK" & strNummer).Visible = Me.Controls("cbGross" & strNummer) And Me.Controls("txtKurzGross" & strNummer) <> ""    Me.Controls("LabGrossFehler" & strNummer).Visible = (Me.Controls("cbGross" & strNummer) And Me.Controls("txtKurzGross" & strNummer) = "") Or _       (Me.Controls("cbGross" & strNummer) = False And Me.Controls("txtKurzGross" & strNummer) <> "") Or _       (Me.Controls("cbGross" & strNummer) = False And Me.Controls("txtKurzGross" & strNummer) = "") End Sub
    
    Leider bekomme ich es nicht zum laufen.
    Wenn ich das richtig verstehe (wobei ich mir nicht sicher bin das ich es tue ;-)) muss ich doch ".Tag" der Variablen "strNummer" zuweisen, oder?
    Wie finden denn cbGross1, txtKurzGross1, LabGrossOk1 und LabGrossFehler1 zusammen?
    Ich definiere zwar "strNummer As String" aber "strNummer" weiß doch nichts mit ".Tag" an zu fangen, oder?

    Jetzt habe ich so viel Zeit investiert das ich auch nicht aufgeben will. Ich wäre euch dankbar wenn ihr noch mal helfen würdet.

    Viele Grüße
    Sven
     
    Zuletzt von einem Moderator bearbeitet: 3. Mai 2012
    sven78hh, 2. Mai 2012
    #17
  3. fette Elfe Erfahrener User
    Hallo Sven,

    zuerst einmal eine Bitte:
    wenn Du Code hier im Forum postest, dann nicht im normalen Text. So ist der kaum lesbar.
    Wenn Du einen Beitrag verfasst, oder eine Antwort schreibst, wirst Du über dem Texteingabefeld ein Rautensymbol finden. Wenn Du darauf klickst erscheint folgender Text im Eingabefeld an der Stelle wo sich der Cursor befindet:
    [ C O D E ] [ / C O D E ]
    Der Cursor sollte jetzt in der Mitte zwischen den eckigen Klammern blinken.
    Wenn Du jetzt Code aus dem Makro-Editor kopierst und zwischen die Klammern einfügst, dann wird der Code so dargestellt wie bei Karin und mir, und ist viel besser lesbar.
    VBA Formulareingaben prüfen Code-im-Forum.jpg


    Deine Frage kann Karin vermutlich besser beantworten, aber ich versuchs mal:

    1. rufst Du folgende Sub in den Ereignisprozeduren auf:
    Code:
    CheckBoxPingPongGross
    Deine Sub heißt aber:
    Code:
    CheckBoxPingGross
    So kann das nix werden. ;O)

    2. Wenn Du eine Sub aufrust, und hinter den Aufruf einen Parameter schreibst:
    Code:
    Private Sub cbGross1_Change()
    
    '   Aufruf:          Parameter:
        CheckBoxPingPong cbGross1.Tag
        
    End Sub
    Dann wird der Parameter an die Variable innerhalb der Klammer hinter dem Sub-Namen übergeben:
    VBA Formulareingaben prüfen Parameterübergabe.jpg

    Übergibst Du mehrere Parameter, so werden die Werte in der Reihenfolgen an die Variablen übergeben, in der sie aufgelistet sind. Eigentlich ganz einfach (Ich hoffe das ist verständlich und ich erzähle keinen Mumpitz):
    Code:
    Private Sub CheckBox1_Click()
    CheckBoxPingPong "CheckBox1", "TextBox1", "LabelOK1", "LabelFault1"
    End Sub
    
    Public Sub CheckBoxPingPong(strCheckBox As String, strTextBox As String, strLabelOK As String, strLabelFault As String)

    Falls noch Fragen sein sollten, frag ruhig.
     
    fette Elfe, 2. Mai 2012
    #18
  4. Beverly
    Beverly Erfahrener User

    VBA Formulareingaben prüfen

    Hi Sven,

    ich habe den Code mal in die Arbeitsmappe eingebaut - schau ihn dir einfach mal an, vielleicht wird dir dann einiges klarer.

    Bis später,
    Karin
     
    Beverly, 2. Mai 2012
    #19
  5. sven78hh
    sven78hh Erfahrener User
    Es funktioniert

    Hey!

    Auch wenn ich das nicht ohne eure Hilfe hinbekommen habe bin ich stolz wie Bolle, das es funktioniert! ;)
    Vielen Dank noch mal für eure Unterstützung!
    Gruß
    Sven

    Den Anhang 5851 betrachten
     
    Zuletzt bearbeitet: 4. Mai 2012
    sven78hh, 3. Mai 2012
    #20
Thema:

VBA Formulareingaben prüfen

Die Seite wird geladen...
  1. VBA Formulareingaben prüfen - Similar Threads - VBA Formulareingaben prüfen

  2. VBA in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Bilder über VBA Größe und DPI ändern für Webshop

    in Microsoft Excel Hilfe
    Bilder über VBA Größe und DPI ändern für Webshop: Hallo Excel Spezialisten, Ich habe mir eine recht aufwendige Tabelle gebastelt, aus der ich Daten für meinen Webshop generiere und in einer .csv bereitstelle. Es werden neue Preislisten...
  7. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  8. Formulareingabe Datumsfeld prüfen

    in Microsoft Excel Hilfe
    Formulareingabe Datumsfeld prüfen: Hallo Ich habe eine Textbox mit dem Namen txtDatum. Bevor ich die Daten im Arbeitsblatt speichere, prüfe ich mit IsDate(txtDatum.Value) ob der Wert ein Datum ist. Es ist mir aber schon passiert...
  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