Das war die einfache Variante. Hier noch die kompliziertere die exakt deinem Wunsch entspricht.
Öffne den VBA Editor (Alt+F11) und füge in ein beliebiges Modul den folgenden Code ein den du EINMALIG mit F5 ausführst.
Sub ButtonEinfuegen()
Spalte = "A"
For z = 2 To 20 'Zeile von/bis
With Range(Spalte & z)
Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ToggleButton.1", Link:=False, _
DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
btn.Object.Caption = "Aktivieren" 'Hier kannst du eine Beschriftung hinterlegen z.B. = "Box" & z für "Box 1" usw.
btn.Name = "Button" & .Address
End With
Next z
End Sub
Klicke im Fenster auf Einfügen -> Klassenmodul und gib darin diesen Code ein:
Public WithEvents tbtn As ToggleButton
Private Sub tbtn_Click()
c = Right(tbtn.ShapeRange.Name, Len(tbtn.ShapeRange.Name) - Len("Button"))
If tbtn.Value = True Then Range(c) = 1 Else Range(c) = 0
End Sub
Klicke nun auf das Modul "Diese Arbeitsmappe" und gib dort diesen Code ein:
Dim tb() As New Klasse1
Private Sub Workbook_Open()
MsgBox "Test"
b = 0
For Each t In ActiveSheet.OLEObjects
If InStr(1, t.ProgId, "ToggleButton") > 0 Then
b = b + 1
ReDim Preserve tb(b)
Set tb(b).tbtn = t.Object
End If
Next t
For Each t In ActiveSheet.Shapes
If InStr(1, t.OLEFormat.ProgId, "ToggleButton") > 0 Then
b = b + 1
ReDim Preserve tb(b)
Set tb(b).tbtn = t.OLEFormat.Object.Object
End If
Next t
End Sub
Schließe nun deine Datei (vergiss nicht als xlsm zu speichern!) und öffne sie erneut. Jetzt sollten deine Buttons im Aktivierten Status eine 1 in die darunterliegende Zelle eintragen.
Gruß Mr. K.