Ich lief ein einfaches Sub namens SetProtection()
einmal auf einem Makro aktiviert Vorlage. Die Arbeitsmappe hat 9 Registerkarten. Ich habe den Code so ausgeführt, dass UserInterfaceOnly:=True
. Es funktioniert gut, während die Vorlage geöffnet ist. Ich speichere und schließe die Vorlage. In einer Windows-Ordneransicht doppelklicke ich auf die Vorlagendatei, sodass Excel eine neue Arbeitsmappe öffnet. Die Einstellung UserInterfaceOnly:=True
wird von der neuen Arbeitsmappe vergessen. Ich bekomme einen Fehler, wenn der Wert einer Zelle geändert wird, wenn VBA versucht, den Wert einer anderen Zelle, die gesperrt ist, zu ändern.Excel 2013 VBA wsheet.protect UserInterfaceOnly: = Wahr
Nehmen wir an, ich bearbeite die Vorlage Datei und savAs eine Makro-fähige Arbeitsmappe. Wenn ich die Arbeitsmappe bearbeite, funktioniert die Einstellung UserInterfaceOnly:=True
weiterhin. VBA kann Änderungen an gesperrten Zellen vornehmen.
Sollte nicht UserInterfaceOnly:=True
von einer Excel-Vorlage Datei weitergegeben werden?
Sub SetProtection()
Dim wSheet As Worksheet
Dim Pwd As String
Pwd = InputBox("Enter your password to protect all worksheets", "Password Input")
For Each wSheet In Worksheets
wSheet.Protect Password:=Pwd, UserInterfaceOnly:=True
Next wSheet
End Sub