2017-04-06 4 views
5

Ich habe ein Arbeitsblatt, das ich meinen Mitarbeitern ausfülle, und ich habe Zellen berechnet, die ich sperren möchte, damit sie sie nicht ändern können. Ich habe die Zellen und die ausgewählten Eigenschaften ausgewählt und sichergestellt, dass das Kontrollkästchen "Sperren" aktiviert ist. Wenn ich das Arbeitsblatt/die Arbeitsmappe beschützte, funktionierte der "Export zu csv" Makroknopf nicht mehr. Um das Makro zu aktivieren abgeschlossen werden eingefügt ich diesen VB-Code in die Arbeitsmappe:Wie sperre ich Zellen, die Formeln enthalten, aber trotzdem Makros funktionieren lassen?

Private Sub Workbook_Open() 

Dim wSheet As Worksheet 
For Each wSheet In Worksheets 

    wSheet.Protect Password:="password", _ 
    UserInterFaceOnly:=True 

Next wSheet 


End Sub 

Das funktionierte aber hatte die unbeabsichtigte Nebenwirkung meine gesperrten Formeln erlauben zu können, auch bearbeitet werden, obwohl sie gesperrt wurden. Nur Zellen, die keine Formelwerte enthalten, blieben gesperrt. Was ist der richtige Weg, um Makros zu erlauben, aber trotzdem Formelzellen zu sperren?

+0

Möglicherweise müssen Sie im Formelblock den Wert ".Value = Value" eingeben und die Formeln mit '.Formula =" ... "erneut eingeben, wenn die Zellen für neue Daten neu berechnet werden sollen. Das Ereignis sub Worksheet_Calculate wird als "Makro" betrachtet. – Jeeped

+0

@Jeeped Was ist, wenn die 'UserInterFaceOnly' am Ende des Makros geändert werden soll. Bitte werfen Sie einen Blick auf meine Antwort und lassen Sie mich wissen, ob das funktioniert. Ich habe gerade keinen Zugang zu Excel, um es zu testen. – Masoud

+0

@Masoud - Workbook_Open befindet sich direkt neben dem Kopf des ThisWorkbook-Codeblatts. Ich bin mir nicht sicher, ob du es nennen kannst. – Jeeped

Antwort

0

Meine Lösung war, die gesamte Arbeitsmappe und Arbeitsblätter zu sperren, dann in die VB-Taste Code der Sperrung der Sperre dann die erneute Aktivierung des Makros. Wie so:

Sub MyMacro() 

Sheet1.Unprotect Password:="password" 

    'insert code here 

    Sheet1.Protect Password:="password" 

End Sub 

Ich löschte dann meine Workbook_Open-Code.

Verwandte Themen