Excel Version: Excel 2016
ich habe folgendes Problem, ich möchte das jedes mal wenn ich meine Excel Datei speichere alle Zellen die beschrieben sind, also nicht leer sind, geschützt werden.
Sodass sie nicht mehr verändert werden können. Das Problem ist das einige Zellen auch verbunden sind, da ich eine Firmenvorlage benutzen muss.
Des Weiteren soll wenn ich eine geschützte Zelle doppelt anklicke eine Box mit Passwort Eingabe kommen. Wenn ich das Passwort eingebe soll die Zelle bearbeitet werden. Das Passwort soll ein anderes sein, als das für das Blatt.
Aber dieses Problem habe ich mit folgendem Code gelöst.
Zur Info oder falls wer eine bessere Idee hat.
Den Code habe ich aus dem Internet.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Locked Then
If InputBox("Bitte Passwort eingeben") = "b" Then
ActiveSheet.Unprotect ("a")
Target.Locked = False
ActiveSheet.Protect ("a")
End If
End If
End Sub
Gibt es hier vielleicht die Möglichkeit das ich den Code nicht in jedes Arbeitsblatt schreiben muss? (15 Arbeitsblätter)
Für die Sache mit dem automatischen Sperren habe ich 2 Sachen im Internet gefunden die jeweils ein Teil der Lösung beinhalten.
Einmal dieser hier:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Merker As Boolean
dim SH as Worksheet
Merker = Me.Saved
for each SH in Thisworkbook.Worksheets
SH.Unprotect "a"
SH.Usedrange.Locked = True
On Error Resume Next
SH.UsedRange.SpecialCells(xlCellTypeBlanks).Locked = False
On Error Goto 0
SH.Protect "a"
Next
If Merker Then Me.Save
End Sub
Dieser funktioniert soweit und ja sogar für die ganze Arbeitsmappe, ich habe 15 Arbeitsblätter. Das Problem bei diesem Code ist leider das er verbundene Zellen nicht sperrt.
und einmal diesen hier:
Private Sub Worksheet_Change(ByVal Target As Range)
'Code sperrt die Zelle, in die eine Eingabe gemacht wurde
Dim rngCell As Range
Set Target = Intersect(Target, Range("E16:BS46"))
If Target Is Nothing Then Exit Sub
Me.Unprotect ("a")
For Each rngCell In Target
rngCell.Select
Selection.Locked = rngCell ""
Next
Me.Protect ("a")
End Sub
Diesen muss ich dann ja in jedes Arbeitsblatt einfügen, und er sperrt direkt nach dem herausgehen aus der Zelle. Dafür funktioniert er auch bei Verbundenen Zellen.
Kann man diesen Code so hinbekommen das er das nur beim Speichern macht?
Vielen Dank schonmal für eventuelle Hilfe und Mühen.
Gruß Sven