Hallo Gustl,
der Code für die Makros unterscheidet sich etwas, je nachdem ob du Checkboxen aus den Formular-Steuerelementen verwendest oder Checkboxen aus den Activ-X-Steuerelementen.
Für Checkboxen aus den Formular-Steuerelementen benötigst du ein Makro, dass du allen Checkboxen zuweist.
'Code in einem allgemeinen Modul der Datei.
'Dieses Makro allen Checkboxen aus den Formularsteuer-Elementen zuweisen
Sub Checkbox\_Erledigt()
Dim objShape As Shape
Dim strCaller As String
strCaller = Application.Caller
Set objShape = ActiveSheet.Shapes(strCaller)
With objShape
Call Formatieren(.TopLeftCell, .ControlFormat.Value = 1)
End With
End Sub
'Sub-Routine zum Formatieren der Zeilen mit den Checkboxen
Public Sub Formatieren(rngZelle As Range, boolValue As Boolean)
If boolValue = True Then
' rngZelle.EntireRow.Interior.ColorIndex = 15 'hellgrau
rngZelle.EntireRow.Interior.Color = 14211288 'hellgrau
Else
rngZelle.EntireRow.Interior.ColorIndex = xlColorIndexNone
End If
End Sub
Für Checkboxen aus den Active-X-Steuerelementen muss du für jede Checkbox ein Ereignismakro anlegen, welches die Formatieren-Subroutine aufruft mit Zelle und Wert als Parameter.
'Code unter dem Tabellenblatt für Active-X Steuerelemente
Private Sub CheckBox1\_Click()
With Me.CheckBox1
Call Formatieren(.TopLeftCell, .Value)
End With
End Sub
Private Sub CheckBox2\_Click()
With Me.CheckBox2
Call Formatieren(.TopLeftCell, .Value)
End With
End Sub
'usw. für die weiteren Checkboxen
Damit TopLeftCell korrekt funktioniert müssen die Checkboxen in den Zeilen so positioniert sein, dass die linke obere Ecke der Checkbox-Kontur innerhalb der jeweiligen Zeile liegt.
Gruß
Franz