Checkliste abhaken

Checkliste in Excel abhakenAufgabe:
Eine Checkliste soll so funktionieren, dass die einzelnen Punkte mit der Maus abgehakt werden können.

Demonstration:
In der Tabelle stehen in Spalte B die Aufgaben. Links davon befinden sich Checkboxen.
Ein Doppelklick auf eine Checkbox versieht sie mit einem Häkchen und zeigt sie grün an.
Mit einem weiteren Doppelklick kann das Abhaken wieder rückgängig gemacht werden. Die leere Checkbox wird rot angezeigt. Wenn Sie in eine leere Zelle (ohne Checkbox) in Spalte A klicken, wird eine neue, nicht angehakte Checkbox erzeugt.

Lösung:
Die leeren Checkboxen sind der Kleinbuchstabe ""o"" in Wingdings-Schriftart formatiert.
Für die Lösung wurde das Doppelklick-Ereignis des Tabellenblatts benutzt. Bei Doppelklick wird ""o"" in ""þ"" verwandelt und umgekehrt.
Durch bedingte Formatierung wird die unterschiedliche Farbe verwirklicht.
Hinweis: Ein einfacher Klick wäre sicher bedienerfreundlicher. Aber es gibt das Klick-Ereignis nicht. Das Klicken auf eine Zelle kann zwar mit dem SelectionChange-Ereignis verarbeitet werden. Doch dieses tritt auch bei Ansteuerung der Zelle mittels Cursorbewegungstasten ein. Und das kann damit ungewollt eintreten.

Anpassung:
Die Tabelle kann beliebig gestaltet werden.
Wenn die Checkboxen nicht in der Spalte A sind, muss die Konstante in der Prozedur geändert werden.

Const intSpalte = 1  'Spalte 1 mit Checkboxen = Spalte A

Den notwendigen VBA-Code finden Sie in Tabelle1 (Demonstration) der Beispielarbeitsmappe.

Folgender VBA-Code wird zum abhaken der Checkliste verwendet.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Const intSpalte = 1  'Spalte mit Checkboxen
   'Nicht ausführen, wenn Doppelklick in anderer Spalte
   If Target.Column <> intSpalte Then Exit Sub
   'Standardmäßiges Doppelklick-Ereignis ausschalten
   Cancel = True
   If Target = "o" Then
      'Leere Checkbox abhaken
      Target.Formula = "þ"
   ElseIf Target = "þ" Then
      Target.Formula = "o"
      'Abgehakte Checkbox ausschalten
   ElseIf Target = "" Then
      Target.Formula = "o"
   End If
End Sub

Das Tool stammt von der Partnerseite wilfert.de.

Das Tool kann hier heruntergeladen werden.