Checkbox Excel 2016: Uncheck all : Nutze assigned Makros

Moin,
in Excel 2016 habe ich mal testweise zwei Checkboxen hinterlegt. Geplant sind beliebig viele, aber mutlich weniger als 20. (Hardcoden bleibt also möglich)

Mein Vorhaben: Es existiert eine Checkbox, die alle anderen bei Aktivierung "unchecked". Jeder Checkbox ist ein "Hide/Unhide"-Makro zugewiesen, für spezielle Spalten. Diese "Unhide"-Makros sollen beim "uncheck"-Event ausgeführt werden.

Momentan habe ich folgendes realisieren können:
Jede Checkbox wird beim Klick auf "uncheck" entsprechend deaktiviert. Leider auch diejenige, die ich anklicke. Subroutine sieht entsprechend so aus:
(Anmerkung: Ich habe aktuell nur Checkbox1 und Checkbox2)

Code:
Sub Uncheck()
    Dim chkBox As Excel.CheckBox
    Application.ScreenUpdating = False
    For Each chkBox In ActiveSheet.CheckBoxes
            If chkBox.Value <> x1Off Then
                chkBox.Value = xlOff
            End If
    Next chkBox
    Application.ScreenUpdating = True
End Sub

Es fehlen also noch zwei Eigenschaften:
- Die angeklickte Checkbox muss aktiviert bleiben (if chkBox <> Checkbox2 funktioniert nicht..)
- Das verbundene Makro (unhide) muss ausgeführt werden.

Anbei das Excel-Sheet in einem Zip-Archiv
Anhang anzeigen 4365

(Es sind 7 Makros definiert: Check, Check2, Uncheck, Hide, Unhide, HideRW, UnhideRW, sollten weitere definiert sein, sollte der Datei nicht weiter getraut werden.)

Viele Grüße und vielen Dank für die Hilfe. :)
 
Zuletzt bearbeitet:
Moin,
habe mein Vorhaben nun soweit gelöst. Es besteht aber noch ein Problem, dass ich recht eindeutig eingrenzen konnte:

Wenn ich in einem Sub folgendes definiere:
Code:
Sub Test()
Columns("JA:JA").select
End Sub

Dann wählt Excel den vollständigen Bereich "JA:KD" aus. (JA kann auch durch jede andere Spalte ersetzt werden.) Da ich nicht vermute, dass jemand dieses Problem rekonstruieren kann, brauche ich Input, woran es liegen könnte, damit ich das in dem ExcelSheet überprüfen kann.
Lassen sich Zellen aneinander binden? D.h. das was mit einer Zelle passiert, passiert mit allen? Allerdings beobachte ich das Verhalten ausschließlich über VBA-Code und ausschließlich in der Range. Selektiere ich manuell eine Spalte, wird auch nur diese geändert.
 
Zurück
Oben