Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

"Wenn Blattschutz dann"....

Forumthread: "Wenn Blattschutz dann"....

"Wenn Blattschutz dann"....
14.11.2005 09:32:44
Fabio
Hallo zusammen,
ein nicht eiliges Problem, mehr als "Nice to have" gesucht.
Ich habe in meiner Excel-Tabelle fünft Arbeitsblätter. Im "fünften" Blatt ist ein VBA (aus dem Forum) hinterlegt, das mir alle Blätter auf Blattschutz setzt.
Nun hätte ich gerne in jedem Arbeitsblatt in dem Feld "B2" das Wort "Blattschutz gesetzt" stehen, wenn der Blattschutz an ist; bzw. das Wort "kein Blattschutz" wenn der eben nicht gesetzt ist.
Danke !
Fabio
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Wenn Blattschutz dann"....
14.11.2005 09:43:03
Jan
Hi Fabio,
Probier mal folgendes Makro:
Sub Schutz()
If ActiveSheet.ProtectContents = True Then
MsgBox "Blattschutz gesetzt."
Else
MsgBox "kein Blattschutz."
End If
Jan
AW: "Wenn Blattschutz dann"....
14.11.2005 11:04:34
Luschi
Hallo Fabio,
eigentlich wollte ich Dir folgende Lösung vorschlagen:
Function testBlattschutz(rg As Range) As String
Application.Volatile
Dim s As String
If ThisWorkbook.Worksheets(rg.Parent.Name).ProtectContents Then
s = "Blattschutz gesetzt"
Else
s = "kein Blattschutz"
End If
testBlattschutz = s
End Function

Formel in Zelle B2: =testBlattschutz(A1).
Im Prinzip klappt das auch. Aber leider löst das Setzen/Entfernen des Blattschutzes und Formeländerungen in der Tabelle kein Ereignis aus. So wird die Zelle nicht automatisch aktualisiert, sondern erst nach Neuberechnung mit Taste F9.
Ich würde den Hinweis in Deinen vorhanden Vba-Code direkt in die jeweilige Zelle B2 schreiben. Dazu müßtest Du aber den Code posten, damit ich ihn vervollständigen kann.
Gruß von luschi
aus klein-Paris
Anzeige
AW: "Wenn Blattschutz dann"....@Luschi
14.11.2005 11:18:29
Fabio
Hallo Luschi,
das ist der Code (aus dem Forum) und er funktioniert auch (wenn auch mit dem nachteil, das ich das PW im Code hinterlegen muss)

Sub YesProtect()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Protect "test1"
Next wks
End Sub


Sub NoProtect()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Unprotect "test1"
Next wks
End Sub

Anzeige
AW: "Wenn Blattschutz dann"....@Luschi
14.11.2005 12:00:34
Luschi
Hallo Fabio,
hier der angepaßte Code:
Sub YesProtect()
Dim wks As Worksheet
For Each wks In ThisWorkbooks.Worksheets
'Prüfen, ob Blattschutz eventuell doch gesetzt!!!
If wks.ProtectContents Then
wks.Unprotect "test1"
End If
wks.Range("B2").Value = "Blattschutz gesetzt"
wks.Protect "test1"
Next wks
End Sub
Sub NoProtect()
Dim wks As Worksheet
For Each wks In ThisWorkbooks.Worksheets
'Prüfen, ob Blattschutz gesetzt!!!
If wks.ProtectContents Then
wks.Unprotect "test1"
wks.Range("B2").Value = "kein Blattschutz"
End If
Next wks
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
Laufzeitfehler....
14.11.2005 12:10:11
Fabio
Hei Luschi - Laufzeitfehler....
und er merkt mir dann diese Zeile an :
"For Each wks In ThisWorkbooks.Worksheets"
"Objekt fehlt"
Fabio
N.S. Und mal Danke an der Stelle!
AW: Laufzeitfehler....
14.11.2005 12:39:44
Luschi
Sorry Fabio,
leider ein "s" zuviel, statt:
For Each wks In ThisWorkbooks.Worksheets
nun
For Each wks In ThisWorkbook.Worksheets
Und das in beiden Prozeduren.
Gruß von Luschi
aus klein-Paris
Anzeige
Funktioniert+ Vielen Dank !
15.11.2005 08:57:21
Fabio
Vielen Dank
;
Anzeige
Anzeige

Infobox / Tutorial

Blattschutz in Excel: Automatische Statusabfrage mit VBA


Schritt-für-Schritt-Anleitung

Um den Blattschutz in Excel zu überprüfen und den Status in Zelle B2 anzuzeigen, kannst du die folgenden VBA-Makros verwenden. Diese Anleitung setzt voraus, dass du mit VBA in Excel vertraut bist.

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub YesProtect()
       Dim wks As Worksheet
       For Each wks In ThisWorkbook.Worksheets
           If wks.ProtectContents Then
               wks.Unprotect "test1"
           End If
           wks.Range("B2").Value = "Blattschutz gesetzt"
           wks.Protect "test1"
       Next wks
    End Sub
    
    Sub NoProtect()
       Dim wks As Worksheet
       For Each wks In ThisWorkbook.Worksheets
           If wks.ProtectContents Then
               wks.Unprotect "test1"
               wks.Range("B2").Value = "kein Blattschutz"
           End If
       Next wks
    End Sub
  4. Führe das Makro aus:

    • Du kannst nun YesProtect oder NoProtect ausführen, um den Blattschutz zu setzen oder zu entfernen und gleichzeitig den Status in Zelle B2 zu aktualisieren.

Häufige Fehler und Lösungen

  • Laufzeitfehler: Objekt fehlt: Wenn du den Fehler "Objekt fehlt" erhältst, überprüfe, ob du ThisWorkbooks anstelle von ThisWorkbook verwendet hast. Ändere es in beiden Prozeduren zu ThisWorkbook.

  • Blattschutz wird nicht aktualisiert: Achte darauf, dass du den richtigen Passwortstring ("test1") verwendest. Wenn du das Passwort nicht korrekt eingibst, wird der Schutz nicht aufgehoben.


Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch eine einfache Formel in Excel nutzen:

  1. In Zelle B2 kannst du folgende Formel eingeben, um den Blattschutz abzufragen:
    =WENN(ISTFEHLER(SCHUTZDATEN("Blattschutz gesetzt");"kein Blattschutz"))

    Diese Formel funktioniert jedoch nicht vollständig, da sie keine dynamische Aktualisierung bei Änderungen des Blattschutzes bietet.


Praktische Beispiele

Hier sind einige Beispiele, wie du den VBA-Code anpassen kannst:

  • Blattschutz für bestimmte Blätter: Wenn du nur für bestimmte Blätter den Blattschutz aktivieren möchtest, kannst du die Schleife anpassen:

    If wks.Name = "Blatt1" Or wks.Name = "Blatt2" Then
      ' Blattschutz setzen oder entfernen
    End If
  • Blattschutz mit Benutzeranpassung: Du kannst die Passwortüberprüfung auch interaktiv gestalten, indem du den Benutzer zur Eingabe des Passworts aufforderst.


Tipps für Profis

  • Automatische Aktualisierung: Um den Status in Zelle B2 automatisch zu aktualisieren, könntest du ein Worksheet-Change-Ereignis verwenden, das den Status bei Änderungen an den Blättern aktualisiert.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen VBA-Prozeduren, um sicherzustellen, dass dein Code auch bei unerwarteten Fehlern stabil bleibt.


FAQ: Häufige Fragen

1. Wie kann ich den Blattschutz in Excel aufheben? Du kannst den Blattschutz aufheben, indem du das Makro NoProtect ausführst, das alle Blätter entsperrt.

2. Was passiert, wenn ich das Passwort vergesse? Wenn du das Passwort vergessen hast, gibt es leider keine Möglichkeit, den Blattschutz ohne das Passwort aufzuheben. Du musst ggf. mit einer Datensicherung arbeiten.

3. Funktioniert dieser Code in allen Excel-Versionen? Ja, dieser VBA-Code sollte in allen modernen Excel-Versionen funktionieren, solange du die Makros aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige