Hallo Michael,
ich hatte vergessen zu schreiben, dass die Boxen mit den Zellen verknüpft sind in dem sie sich befinden.
Das bedeutet, dass bei Auswahl in die Zelle Wahr oder Falsch eingetragen wird.
Bei Wahr in der Zelle wird in Spalte G der Wert der Zelle aus Spalte B übernommen.
In Spalte F wird dann eine lückenlose Liste generiert.
Durch Textverkettung hole ich die Liste dann in die Zelle mit der Auflistung.
Für jede Box muss dann in der Formel die Zelladresse angegeben werden.
Beim Einfügen oder Löschen einer Box müsste dann die Formel angepasst werden
Wenn Du eine Box einfügst und diese mit der Zelle verknüpfst, wird die Zellverknüpfung beim Kopieren mit übernommen.
Deswegen wurden bei Dir die Boxen gleich geschaltet.
Du musst für jede Box die Zellverknüpfung manuell in den Eigenschaften ändern/anpassen.
Ich habe Dir Deine Datei angepasst und eingestellt.
Unten stelle ich Code ein, welches Du nutzen kannst um die Boxen bei Bedarf in einem abwählen kannst.
Dann hast Du die Möglichkeit alle Boxen zu löschen oder eine vorgegebene Anzahl einzufügen.
Beim Einfügen wird nachgefragt, wieviele eingefügt werden.
Die Platzierung der Boxen ist im Code zu Beginn fest vorgegeben.
Schau Dir die Kommentare an.
Der gesamten Code kannst Du in ein Modul einfügen. Unter Makros in der Symbolleiste Entwicklertools kannst Du die einzelnen Prozeduren aufrufen und ausführen.
Genug geschrieben, teste alles und tob dich erst mal mit der Beispieldatei aus.
CheckboxAuswahl_3.xlsx (Größe: 21,11 KB / Downloads: 4)
Code:
Option Explicit
Sub KontrollKästchen_löschen()
Dim i As Integer
With Worksheets("Tabelle1")
For i = .CheckBoxes.Count To 1 Step -1
.CheckBoxes(i).Delete
Next
End With
End Sub
Sub KontrollKästchen_Häckchen_raus()
Dim i As Integer
With Worksheets("Tabelle1")
For i = .CheckBoxes.Count To 1 Step -1
If .CheckBoxes(i) = 1 Then .CheckBoxes(i) = 0
Next
End With
End Sub
Sub KontrollKästchen_einfügen()
Dim objBox As Object
Dim shpBox As Shape
Dim wksA As Worksheet
Dim lngZeile As Long
Dim rngZelle As Range
Dim lngAbZeile As Long
Dim lngLinkedCellSpalte As Long
Dim vntAnzahlKaestchen As Variant
Dim lngKaestchenNummer As Long
Dim rngLinkedCell As Range
lngAbZeile = 5 'Anpassen!
lngLinkedCellSpalte = 1 'Anpassen!
Set wksA = Worksheets("Tabelle1") 'Anpassen!
vntAnzahlKaestchen = InputBox("Bitte di Anzahl Kästchen angeben", "Frage", 1)
If vntAnzahlKaestchen = "" Then
MsgBox "Abgebrochen", , "Abgebrochen"
Exit Sub
End If
Application.ScreenUpdating = False
For lngKaestchenNummer = 1 To vntAnzahlKaestchen
lngZeile = lngAbZeile + ((lngKaestchenNummer - 1))
Set rngZelle = wksA.Cells(lngZeile, lngLinkedCellSpalte)
Set objBox = wksA.CheckBoxes.Add(rngZelle.Left, rngZelle.Top, 20, 1)
Set shpBox = wksA.Shapes(objBox.Name)
With shpBox
.Top = rngZelle.Top + (rngZelle.Height - .Height) / 2
.Left = rngZelle.Left + (rngZelle.Width - .Width) / 2
.TextFrame.Characters.Text = "Kontrollkaestchen_" & lngKaestchenNummer
.Name = "Kontrollkaestchen_" & lngKaestchenNummer & "_" & lngLinkedCellSpalte
.TextFrame.Characters.Text = ""
End With
objBox.Value = 0
objBox.LinkedCell = rngZelle.Address(True, True, xlA1, True)
Next
End Sub