Registriert seit: 11.04.2014
Version(en): 365
Hallo zusammen!
Ich möchte gerne eine Messagebox einblenden, wenn der Blattschutz eines Tabellenblattes aufgehoben wird.
Es gibt mehrere Tabellenblätter und die Meldung soll kommen egal bei welchen Tabellenblatt der Schutz aufgehoben wird.
Wie geht das?
Danke!
LG Herbert
Windows 10
Office 365
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hallo Herbert!
Da das Aufheben des Blattschutzes ja eine bewusste Aktion ist (die auch kein auswertbares Ereignis darstellt) stellt sich mir die Frage nach dem Sinn.
Willst Du evtl. beim Öffnen einer Datei eine Meldung erhalten, welche Blätter ungeschützt sind?
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 11.04.2014
Version(en): 365
Hallo Ralf,
es geht darum, dass bei der betreffenden Datei der Blattschutz nur von bestimmten Personen aufgehoben werden kann, denen das PW bekannt ist.
Das sind Personen die dann auch Änderungen an der Datei vornehmen.
Ich möchte vor einer Änderung aber eine Sicherung als pdf haben (makro besteht bereits und kann auch per Schaltfläche gestartet werden).
Mein Wunsch wäre es, dass der Anwender beim Aufheben des Blattschutzes nochmals auf die Sicherung hingewiesen wird und falls er diese vergessen hat, aufgrund der Auswahl in der Messagebox die Sicherung (das Makro) starten kann.
LG Herbert
Windows 10
Office 365
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Da ich gleich weg bin:
Folgendes ins Modul DieseArbeitsmappe:
Private Sub Workbook_Open()
Dim ws As Worksheet, msgText As String
msgText = "Folgende Blätter sind geschützt:" & vbLf & vbLf
For Each ws In ThisWorkbook.Worksheets
If ws.ProtectContents Then
msgText = msgText & Chr(149) & vbTab & ws.Name & vbLf
End If
Next
MsgBox msgText
End Sub
Bei jedem Öffnen der Datei werden Dir die geschützten Blätter aufgelistet.
(geht natürlich auch vice versa)
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
... mein letzter Beitrag ist ja jetzt obsolet, ich schaue gleich nochmal ...
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Wie ich bereits oben schrieb, ist das Aufheben des Blattschutzes kein für VBA auswertbares Ereignis, welches abgefangen werden kann.
Was geht ist, dass bei einer Änderung das Sichern-Makro anspringt.
Dazu bedarf es aber einer Kombination aus _SelectionChange() zum Speichern des "alten" Werts in einer globalen Variable,
und _Change(), welches die Änderung zunächst über Application.Undo rückgängig macht und speichert.
Wenn sich hier bis heute Abend noch nichts getan hat, schaue ich mir das mal genauer an, bin jetzt weg.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 11.04.2014
Version(en): 365
Hallo Ralf,
danke für Deine Hinweise.
Ich habe es versucht anders zu lösen.
Ich habe zum Aufheben des Blattschutzes eine Schaltfläche eingebaut und hebe den Blattschutz mit Makro für alle Tabellenblätter auf.
Im Anschluss ans Makro habe ich dann die Hinweismeldung eingebaut.
Wenn der Blattschutz nicht über die Schaltfläche aufgehoben wird sondern direkt über Excel fehlt der Hinweis.
Aber die Schaltfläche ist so positioniert, dass sie normalerweise verwendet wird.
Ich glaube das sollte funktionieren!
LG Herbert
Windows 10
Office 365
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
(08.10.2015, 07:37)herbert0803 schrieb: Ich habe zum Aufheben des Blattschutzes eine Schaltfläche eingebaut und hebe den Blattschutz mit Makro für alle Tabellenblätter auf.
Im Anschluss ans Makro habe ich dann die Hinweismeldung eingebaut.
dann kannst Du doch auch gleich das Makro zum Erstellen des pdf starten, dann wird der Hinweis nicht unbedingt benötigt.