Das Verhalten, das Sie für Ihre Steuerelemente beschreiben, klingt ähnlich wie das Vorhandensein mehrerer Kontrollkästchen, zusammen mit einem Kontrollkästchen Alle auswählen, um alle Kontrollkästchen des Satzes gleichzeitig zu aktivieren oder zu deaktivieren:
Um dies zu erreichen, müssen Sie meiner Ansicht nach in den verschiedenen After Update
Ereignishandlern VBA-Code für Ihre Steuerelemente verwenden.
Im folgenden Beispiel gehe ich davon aus, dass Sie eine Reihe von Ankreuzfeldern mit dem Namen chk1
, chk2
und chk3
und ein einzelnes Ankreuzfeld Alle auswählen haben chkA
(dies kann jedoch durch Hinzufügen der oberen Begrenzung der For
Schleifen auf eine beliebige Anzahl von Ankreuzfeldern erweitert werden).
Sie können dann das gewünschte Verhalten mithilfe der folgenden zwei Funktionen erreichen:
Eine Funktion zum Umschalten aller Optionskästchen auf einen bestimmten Wert:
Function ToggleAll(v As Integer) Dim i As Integer For i = 1 To 3 Controls("chk" & i).Value = v Next i End Function
Eine Funktion zum Testen, ob alle Kontrollkästchen für Optionen aktiviert sind, und das Kontrollkästchen Alle auswählen entsprechend aktivieren oder deaktivieren :
Function AllEnabled() Dim i As Integer, v As Integer: v = -1 For i = 1 To 3 v = v * Abs(Controls("chk" & i).Value) Next i chkA.Value = v End Function
Dann müssen Sie einfach die oben genannten Funktionen in den After Update
Event-Handlern für Ihre Steuerelemente auswerten :
Private Sub chk1_AfterUpdate() AllEnabled End Sub Private Sub chk2_AfterUpdate() AllEnabled End Sub Private Sub chk3_AfterUpdate() AllEnabled End Sub Private Sub chkA_AfterUpdate() ToggleAll chkA End Sub
Jedes Mal, wenn der Wert der einzelnen Optionskästchen geändert wird, AllEnabled
überprüft die Funktion, ob alle Optionsfelder aktiviert sind, und setzt den Wert des Kontrollkästchens Alle auswählen entsprechend.
Wenn der Wert des Kontrollkästchens Alle auswählen ( chkA
) geändert wird, wird die ToggleAll
Funktion ausgewertet und gleichzeitig die Einstellung aller Optionskästchen im Formular aktiviert oder deaktiviert.