Wie kann ich in Excel über Kontrollkästchen hochzählen?

1. Bild - (Microsoft Excel, Office, Kontrollkästchen) 2. Bild - (Microsoft Excel, Office, Kontrollkästchen)

3 Antworten

Okay, das ist jetzt im Prinzip ein Zähler für eine Zelle.

Ich möchte, dass für jeden neu gesetzten Haken die Zelle daneben immer +1 macht. Dazu muss ich die ganze Spalte nach dem aktuell größtem Wert durchsuchen und diesen mit 1 addieren.

Ist etwas schwer zu erklären was genau ich möchte. Ich versuche dies nochmal in einem Bild zu zeigen.

Erklärung zum Bild:

Je nachdem, wo ich in Spalte C meinen Haken setze, soll in Spalte E als erstes in der selben Zeile eine 1 erscheinen.

Jetzt setze ich meinen zweiten Haken und möchte dass in Spalte E nach der größten Zahl durchsucht wird und diese dann mit 1 addiert wird, sodass ich immer die nächst höhere Zahl erhalte.

Hoffe das war etwas verständlicher...

3. Bild - (Microsoft Excel, Office, Kontrollkästchen)
Ninombre  11.03.2016, 17:30

ich hab es als Kommentar zu meiner Antwort ergänzt. Auch das geht nur über ein Makro. Excel kann mit Formeln keine Zustände festhalten.

Ich hab jetzt allerdings was gefunden, dass man alle Checkboxen mit den einen Makro verknüpfen kann, nicht mehrere Makros braucht.

0

Ich gehe jetzt einfach mal davon aus, dass du die Werte der Kontrollkästchen mit den darunterliegenden Zellen in C verknüpft hast, sodass z.B. C6 WAHR oder FALSCH ist.

Die Formel in E6 ist dann:
=WENN(C6;1;"")

Die Formel in E7:
=WENN(ZÄHLENWENN(C$6:C7;WAHR)>ZÄHLENWENN(C$6:C6;WAHR);ZÄHLENWENN(C$6:C7;WAHR);"")

Diese Formel in E runterkopieren.

Über eine Formel wird kein fester Wert abgelegt, sondern laufend neu berechnet. Das andere geht nur per Makro

Sub kontrollkästchen1_Klick()
If ActiveSheet.Shapes("Kontrollkästchen 1").ControlFormat.Value = xlOff Then Exit Sub
Range("A1").Value = Range("A1").Value + 1
End Sub

Das mit dem Kontrollkästchen verbindung und gleichartig für die anderen kopieren: Jeder Klick ruft das jeweilige Makro auf, wenn das Kästchen deaktiv ist, wird nichts gemacht, sonst der Wert in A1 hochgezählt.

Ninombre  11.03.2016, 17:27

Im Bezug auf Deine Konkretisierung:

Sub klick()
Dim i As Integer
Dim wo As Integer
If ActiveSheet.Shapes(Application.Caller).ControlFormat.Value = xlOff Then Exit Sub
i = WorksheetFunction.Max(Range("E1:E10").Value) + 1
wo = Right(Application.Caller, 2) 'ggf. + x wenn nicht in der ersten Zeile begonnen wird
If Range("E" & wo).Value <> "" Then Exit Sub 'verhindert das nach erneutem Aktivieren der bisherige Wert überschrieben wird
Range("E" & wo).Value = i
End Sub

So funktioniert das allerdings nur, wenn die Checkboxen Kontrollkästen 1, Kontrollkästchen 2 etc. heißen und die Nummerierung mit der tatsächlichen Reihenfolge übereinstimmt. Dann kann man einfach die zwei Zeichen von rechts nehmen und daraus die Zeile ableiten. Zwei Zeichen, um auch mehr als 9 Checkboxen nutzen zu können. Durch das Leerzeichen passiert bei einstelligen Zahlen nichts.

Wenn es über die Nummer in Namen nicht geht, muss Du ein manuelles Mapping vornehmen:

Sub klick2()
Dim i As Integer
Dim wo As Integer
If ActiveSheet.Shapes(Application.Caller).ControlFormat.Value = xlOff Then Exit Sub
i = WorksheetFunction.Max(Range("E1:E10").Value) + 1
Select Case Application.Caller
Case kastenx: wo = 1 'jeweils der Name der Checkbox und wo = Zeile in die geschrieben werden soll
Case kasteny: wo = 2
Case kastenblupp: wo = 3
End Select
If Range("E"&wo).value<>"" then exit sub
Range("E" & wo).Value = i
End Sub
1