Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

UserForm Änderung abfragen
#1
Hallo wertes Forum,

und meine Exkursion in die Welt der UserForms geht weiter...

Ich habe ein UserForm mit 42 Checkboxen (6 Aufgaben, die über eine Woche geplant werden sollen). Diese sind per Code mit Haken oder leer vorbelegt.
Weiterhin habe ich zwei Buttons, die die Wochenansicht um eine Woche vorschiebt bzw. zurücksetzt (und dabei das UserForm neu füllt).
Das funktioniert super.

Jetzt brauche ich eine Abfrage, ob sich seit dem letzten Aufbau des UserForms etwas geändert hat (sprich in einer Checkbox ein Haken gesetzt oder entfernt wurde).
Aufgrund der Menge an Steuerelementen habe ich gedacht, ich nehme das Userform_Click-Event und werte aus, ob eine CheckBox geändert wurde. Doch leider zuckt mein
Code:
Private Sub UserForm_Click()

Debug.Print "Paul"

End Sub
nicht.

Ich kann Haken setzen und löschen, aber es passiert nichts (kein "Paul" im Direktfenster).

Wo ist der Fehler bzw. wie löse ich meine Aufgabe am Besten?

Vielen Dank,
Lutz
Top
#2
Hallöchen,

Für das Userform_Click musst Du auf's userform klicken und nicht auf irgendwas, was darauf liegt.
Deinen debuggten Paul müsstest Du entweder in jeden Click-Code aufnehmen oder Du müsstest Dich mal in die Klassenprogrammierung begeben …

Oder Du setzt die ControlSource der Checkboxen und wertest in einem WorkSheet_Change die Änderung aus.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo Lutz,

vielleicht hilft dir folgender Ansatz:


Code:
For i = 0 To 10                        ' -->  Deine Anzahl an Controls hier ersetzen
    Debug.Print i, UserForm.Controls(i).Name
    If UserForm.Controls(i) = True Then
        ' Deine weiteren Anweisungen ...
        ' ggf. externe Subroutine aufrufen
        ' und als Parameter den jeweiligen
        ' UserForm.Controls(i).Name
        ' übergeben
    End If
Next

Viel Erfolg.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#4
Hallo,

vielen Dank für Eure Antworten.

@LuckyJoe, du fragst jetzt alle Checkboxen ab, und bei den gesetzten soll entsprechender Code laufen, oder? Oder habe ich etwas übersehen? Das eigentliche Auswerten der Checkboxen soll aber noch nicht passieren...

@schauan, das habe ich inzwischen auch per Zufall herausgefunden... Plötzlich stand "Paul" im Direktfenster...
Für den Rest Deiner Antwort bin ich wohl zu blöd. Was meinst Du mit Klassenprogrammierung? Und was ist die ControlSource?

Ich habe jetzt meinen Code dahingehend geändert, dass ich im Userform_Initialize meine Vorgaben in ein Array einlese, dann bei jedem Click auf einen der Buttons die aktuelle Belegung der Checkboxen im Array überschreibe (egal ob geändert oder nicht) und erst bei Click auf den OK-Button das Array wieder in meine Vorgaben zurückschreibe.

Gruß,
Lutz
Top
#5
schau mal

https://www.snb-vba.eu/VBA_Userform_invo...le_en.html


PS. Ohne Beispieldatei machst du es Helfern unnötig schwierig dir zu helfen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#6
Hallo Lutz,

das mit dem Array ist auch OK Smile
Die ControlSource ist eine Eigenschaft d(ein)er Checkboxen - das ist ein "Verbundene Zelle"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste