Clever-Excel-Forum

Normale Version: Arbeitsmappe schützen beim Schließen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
Ich möchte gerne in einer Arbeitsmappe per Makro alle Blätter mit einem Blattschutz versehen, den man bei Bedarf manuell für einige deaktivieren kann.
Dazu habe ich folgende Makros verwendet:

    '==============================
    'Blattschutz aktivieren
    '==============================
    Sub Blattschutz_aktivieren()
    Dim ws As Worksheet
      For Each ws In Worksheets
      ws.Protect
    Next ws
    End Sub

   '==============================
   'Blattschutz deaktivieren
   '==============================
    Sub Blattschutz_deaktivieren()
    Worksheets("1").Unprotect
    Worksheets("2").Unprotect
    Worksheets("3").Unprotect
    Worksheets("4").Unprotect
    Worksheets("5").Unprotect
   End Sub



Bis dahin funktioniert das auch noch ganz wunderbar, jetzt wollte ich noch einbauen, dass beim Schließen der Blattschutz für alle Blätter wieder aktiviert wird.
Dabei habe ich folgendes gefunden:

Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim ws As Worksheet
  For Each ws In Worksheets
    ws.protect
  Next ws
End Sub



Leider funktioniert das aber dann nicht für alle Blätter.
Könnt ihr mir bitte helfen? Bin da der totale Neuling (Nutze Excel 2016)

Vielen lieben Dank schon mal!
Hanna
Hallo Hanna,
wenn Du das nicht bei beforeclose, sondern bei beforesave unterbringst, sollte es funktionieren.
Oder Du baust in das BeforeClose noch nach Next ws ein Activeworkbook.save ein, dann wird aber immer gespeichert!
Gruß der AlteDresdner
Super, vielen lieben Dank für die schnelle Antwort, ich probier das heute Abend gleich aus!
Lieber AlterDresdner,
hat super funktioniert, danke nochmal!!!!!!!!!![img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Liebe Grüße,
Hanna
Hey, hallo, ich bins nochmal ....
Habe das jetzt geändert, gestern hat das wunderbar funktioniert.
Wollte das heute morgen auf weitere Arbeitsmappen übertragen, habe aber festgestellt, dass der Blattschutz nicht aktiviert wird, wenn man nicht speichert.

Sub Workbook_BeforeSave(Cancel As Boolean)
  Dim ws As Worksheet
  For Each ws In Worksheets
    ws.Protect
  Next ws
End Sub
'==============================
    'Blattschutz aktivieren
    '==============================
       Sub Blattschutz_aktivieren()
    Dim ws As Worksheet
      For Each ws In Worksheets
        ws.Protect
      Next ws
    End Sub
'==============================
    'Blattschutz deaktivieren
    '==============================
    Sub Blattschutz_deaktivieren()
    Worksheets("1").Unprotect
    Worksheets("2").Unprotect
    Worksheets("3").Unprotect
    Worksheets("4").Unprotect
    Worksheets("5").Unprotect
    End Sub


Könnte ich bitte nochmal Hilfe bekommen?
Vielen lieben Dank vorab!
Hanna
Hallo Hanna,

wie startest Du denn dieses Makro?
Sub Blattschutz_aktivieren
Hast Du dafür im Original irgendwo ein Menü oder einen Button?
Hi Hanna,

(27.07.2016, 09:47)Hanna schrieb: [ -> ]habe aber festgestellt, dass der Blattschutz nicht aktiviert wird, wenn man nicht speichert.

Sub Workbook_BeforeSave(Cancel As Boolean)
[...]
Sub Blattschutz_aktivieren()
[...]

Das ist ja auch klar, der Blattschutz wird nur dann aufgerufen, wenn das Workbook gespeichert wird, das sagt schon der Name der Sub.

Wie André schon geschrieben hat:
Wenn Du das Makro "Blattschutz_aktivieren" laufen lassen willst, dann solltest Du es auch irgendwie aufrufen.
Hallo zusammen,
danke für eure Antworten, und entschuldigt bitte, dass ich mich erst so spät melde.

Ich hab dafür einen Button, so dass man das auch manuell steuern kann/soll

LG
Hanna