Hallo Detlef,
wenn ich das richtig sehe, ist der Code in der angegebenen Datei geschützt :-(
Auch kann ich Deinem hier geposteten Code in den einzelnen Sub's nicht ganz folgen. Obwohl der Haken z.B. gesetzt ist, wird immer an der gleichen Stelle "Haken nicht gesetzt" rausgegeben bzw. umgekehrt. Der Button-Zustand wird in einer globalen Variablen (insgesamt viele) festgehalten. Wozu?
Das teilweise Ausblenden einiger Zeilen basiert auf einem merkwürdigem Code teilweise abhängig von Checkbox2 teilweise von der eigenen Checkbox.
Naja, die Reduzierung von Code basierend auf Deinen Code, wozu immer er auch gebraucht wird, kannst Du z.B. wie nachfolgend beschrieben angehen.
De Idee hierbei ist, dass gemeinsamer Code in nur einer Functon bearbeitet wird....
Schau mal, ob Du damit etwas anfangen kannst.
Dim globalBoolCheckBoxAusgewählt(200) As Boolean
Private Sub CheckBox11_Click()
If GetCheckBox(CheckBox1) Then Rows("92").Hidden = True 'Ist Checkbox angehakt?
End Sub
Private Sub CheckBox2_Click()
If GetCheckBox(CheckBox2) Then Rows("18:19").Hidden = True
End Sub
Private Sub CheckBox3_Click()
If GetCheckBox(CheckBox3) Then Rows("20").Hidden = True
End Sub
Private Sub CheckBox4_Click()
If GetCheckBox(CheckBox3) Then Rows("20").Hidden = True
End Sub
Private Sub CheckBox5_Click()
GetCheckBox CheckBox5
End Sub
Private Sub CheckBox6_Click()
GetCheckBox CheckBox6
End Sub
'usw.....
Function GetCheckBox(oCheckbox As Object) As Boolean
'Grundfunktion einer jeden Checkbox hier abhandeln
'und zurückgeben, ob Control angehakt
With oCheckbox
If .Caption = Chr$(163) Then
.Caption = "R"
GetCheckBox = True
Range("B2") = "Haken gesetzt"
Else
.Caption = Chr$(163)
GetCheckBox = False
Range("B2") = "Haken nicht gesetzt"
End If
globalBoolCheckBoxAusgewählt(Val(Replace(.Name, "CheckBox", ""))) = GetCheckBox
End With
End Function
viele Grüße
Karl-Heinz
|