Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Arbeitsmappe schützen beim Schließen
#1
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
Antworten Top
#2
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
Gruß der AlteDresdner (Win11, Off2021)
[-] Folgende(r) 1 Nutzer sagt Danke an AlterDresdner für diesen Beitrag:
  • Hanna
Antworten Top
#3
Super, vielen lieben Dank für die schnelle Antwort, ich probier das heute Abend gleich aus!
Antworten Top
#4
Smile 
Lieber AlterDresdner,
hat super funktioniert, danke nochmal!!!!!!!!!![img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Liebe Grüße,
Hanna
Antworten Top
#5
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
Antworten Top
#6
Hallo Hanna,

wie startest Du denn dieses Makro?
Sub Blattschutz_aktivieren
Hast Du dafür im Original irgendwo ein Menü oder einen Button?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
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.
Antworten Top
#8
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste