Option Explicit
Sub CheckboxToggle(Cbo As MSForms.CheckBox)
  If Cbo.Value Then
    Range("A" & GetIndex(Cbo)).Font.ColorIndex = 8
  Else
    Range("A" & GetIndex(Cbo)).Font.ColorIndex = 10
  End If
End Sub
Private Function GetIndex(Cbo As MSForms.CheckBox) As Long
  Dim str As String
  Dim i As Long
  For i = Len(Cbo.Name) To 1 Step -1
    Select Case Mid$(Cbo.Name, i, 1)
      Case "0" To "9"
        str = str & Mid$(Cbo.Name, i, 1)
      Case Else
        Exit For
    End Select
  Next
  GetIndex = CLng(str)
End Function
Private Sub CheckBox1_Click()
  Call CheckboxToggle(CheckBox1)
End Sub
Private Sub CheckBox2_Click()
  Call CheckboxToggle(CheckBox2)
End Sub
usw.
	Besser wäre jedoch du würdest dafür Formular-Steuerelemente nehmen. Dann kannst du nämlich, dank Application.Caller, für alle Kontrollfelder nur eine einzige Prozedur schreiben und weißt diese dann allen zu. 
	Du kannst damit also auf das 
Private Sub CheckBox1_Click()
  Call CheckboxToggle(CheckBox1)
End Sub
Private Sub CheckBox2_Click()
  Call CheckboxToggle(CheckBox2)
End Sub
usw.
 
	verzeichnten. 
	  
	PS: Anstatt den Index aus dem Kontrollfeldnamen zu ziehen, kann man auch die Zelle auf der das Control liegt bestimmen und davon dann die Zeile nehmen. 
	  
	Gruß 
     |