Hallo,
falls Du das so meinst, dass Du pro Zeile den Schutz einschalten und auschalten möchtest, dann ein Beispiel in der Datei anbei.
Mit Formularsteuerelementen. Grundsätzlich gilt der Schutz pro Blatt. Zellen kannst Du vom Schutz ausnehmen oder einschließen.
Das Code-Beispiel in der Datei wertet die Position = TopLeftCell des Kontrollkästchens aus, d.h. dass diese sich dann innerhalb
einer Zeile befinden müssen. Und macht sich zunutze, dass per Caller das angeklickte Steuerelement ermittelt werden kann.
Sub CellProtectionOnOff()
Dim lngValue As Long
Dim lngRow As Long
Dim strRange As String
' Entschützen...
ActiveSheet.Unprotect "" ' Ggf. Kennwort
' Ermitteln...
lngRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
lngValue = ActiveSheet.Shapes(Application.Caller).ControlFormat.Value
strRange = ActiveSheet.Range(ActiveSheet.Cells(lngRow, 1), ActiveSheet.Cells(lngRow, 8)).Address
' Zellschutz ein und aus...
ActiveSheet.Range(strRange).Locked = CBool(lngValue > 0)
' Schützen...
ActiveSheet.Protect ""
End Sub
Noch 'ne Anmerkung: bei einer überschaubaren Anzahl von Checkboxes ist's noch Ok. Wenn Du aber später Hunderte
von den Dingern hast, ist die Vorgehensweise nicht optimal. Einfacher wäre dann z.B. eine Spalte zu nehmen und
dessen Doppelklick-Ereignis auszuwerten.
@gmg-cc: Lieber Günther, Active-X ist nicht immer von Vorteil; in einem solchen Fall wie hier oben müsste er für
jedes ActiveX-Steuerelement eine Ereignisroutine machen. Oder Klassen, was dann aber etwas komplizierter ist.
Gruß