Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA - Prüfen ob Blatt geschützt

Forumthread: Excel VBA - Prüfen ob Blatt geschützt

Excel VBA - Prüfen ob Blatt geschützt
30.12.2022 09:12:31
Frank
Hallo zusammen,
ich möchte mit einem kleinen VBA-Code prüfen ob ein Tabellenblatt geschützt ist und dann weitere Aktionen ausführen - leider wird der Befehl "If Tabelle16.Protect = True" nicht akzeptiert:

Private Sub Worksheet_Change(ByVal Target As Range)
'Prüfen, ob "ja" in Zelle B70 steht
If Range("B70").Value = "ja" Then
If Tabelle16.Protect = True
Tabelle16.Unprotect
Rows("72:75").EntireRow.Hidden = False
Tabelle16.Protect
ElseIf Tabelle16.Protect = False
Rows("72:75").EntireRow.Hidden = False
End If
ElseIf Range("B70").Value = "nein" Then
If Tabelle16.Protect = True
Tabelle16.Unprotect
Rows("72:75").EntireRow.Hidden = True
Tabelle16.Protect
ElseIf Tabelle16.Protect = False
Rows("72:75").EntireRow.Hidden = True
End If
End If
End Sub
Hat vielleicht jemand eine Idee wie ich das lösen kann?
Danke vorab.
Gruß
Frank
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - Prüfen ob Blatt geschützt
30.12.2022 09:18:20
Frank
Habe es selber gefunden ... es fehlte die Then Bedingung .. typischer Anfängerfehler :-)
AW: Excel VBA - Prüfen ob Blatt geschützt
30.12.2022 09:26:31
Frank
Fubktioniert leider doch noch nicht. Es kommt die Meldung "Fehler beim Kompilieren: Function oder Variable erwartet" auf. Hat jemand eine Idee?

Private Sub Worksheet_Change(ByVal Target As Range)
'Prüfen, ob "ja" in Zelle B70 steht
If Range("B70").Value = "ja" Then
If Tabelle16.Protect = True Then
Tabelle16.Unprotect
Rows("72:75").EntireRow.Hidden = False
Tabelle16.Protect
ElseIf Tabelle16.Protect = False Then
Rows("72:75").EntireRow.Hidden = False
End If
ElseIf Range("B70").Value = "nein" Then
If Tabelle16.Protect = True Then
Tabelle16.Unprotect
Rows("72:75").EntireRow.Hidden = True
Tabelle16.Protect
ElseIf Tabelle16.Protect = False Then
Rows("72:75").EntireRow.Hidden = True
End If
End If
End Sub
Danke vorab.
Anzeige
AW: Excel VBA - Prüfen ob Blatt geschützt
30.12.2022 09:44:03
MCO
Moin!
Ich kann erkennen, was Tabelle16 ist.
Der Chatbot gibt es für einen definierten Tabellenbereich wieder:

Sub CheckIfTableIsProtected()
Dim myTable As ListObject
'Set the table that you want to check
Set myTable = ActiveSheet.ListObjects("Tabelle16")
'Check if the table is protected
If myTable.ProtectContents Then
MsgBox "The table is protected."
Else
MsgBox "The table is not protected."
End If
End Sub
Gruß, MCO
Anzeige
AW: UserInterfaceOnly
30.12.2022 09:47:02
hary
Moin
Frage ist Tabelle6 die in welcher der Changecode steht?
Soll wirklich bei jeder Zellaenderung der Code ausgefuehrt werden?
Dafuer gibt es UserInterfaceOnly:=True. Lasst Codeaktionen zu.

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Protect , UserInterfaceOnly:=True
Rows("72:75").Hidden = Not Range("B70").Value = "ja"
End Sub
gruss hary
Anzeige
AW: Excel VBA - Prüfen ob Blatt geschützt
30.12.2022 09:48:46
ralf_b
protect ist eine Methode und keine Eigenschaft.
eine Methode ruft man mit Parametern auf z.b. sh.protect pw:="bla"
einer Eigenschaft weist man Werte zu oder fragt diese ab. z.b. if sh.protectcontents = true then oder sh.name = "Blatt2"
https://learn.microsoft.com/de-de/office/vba/api/excel.worksheet.protectcontents
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Prüfen ob Blatt geschützt ist


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein Arbeitsblatt in Excel geschützt ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code überprüft den Schutzstatus eines bestimmten Blattes (in diesem Fall „Tabelle16“) und führt Aktionen basierend auf dem Status aus.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu oder wähle das entsprechende Arbeitsblatt aus.
  3. Kopiere den folgenden Code in das Modul:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Prüfen, ob "ja" in Zelle B70 steht
    If Range("B70").Value = "ja" Then
        If Tabelle16.Protect = True Then
            Tabelle16.Unprotect
            Rows("72:75").EntireRow.Hidden = False
            Tabelle16.Protect
        ElseIf Tabelle16.Protect = False Then
            Rows("72:75").EntireRow.Hidden = False
        End If
    ElseIf Range("B70").Value = "nein" Then
        If Tabelle16.Protect = True Then
            Tabelle16.Unprotect
            Rows("72:75").EntireRow.Hidden = True
            Tabelle16.Protect
        ElseIf Tabelle16.Protect = False Then
            Rows("72:75").EntireRow.Hidden = True
        End If
    End If
End Sub
  1. Schließe den VBA-Editor und teste den Code in Deinem Arbeitsblatt, indem Du den Wert in Zelle B70 änderst.

Häufige Fehler und Lösungen

  • Fehlermeldung: "Function oder Variable erwartet"
    Stelle sicher, dass Du die Then-Bedingung in Deiner If-Abfrage korrekt platziert hast. Der Befehl sollte so aussehen: If Tabelle16.Protect = True Then.

  • "Fehler beim Kompilieren"
    Überprüfe die Syntax Deines Codes und achte darauf, dass alle Variablen und Objekte korrekt deklariert sind.

  • Der Code funktioniert nicht wie erwartet
    Vergewissere Dich, dass das Arbeitsblatt tatsächlich geschützt ist und dass Du die richtige Referenz zu „Tabelle16“ verwendest.


Alternative Methoden

Eine alternative Methode, um den Schutzstatus eines Arbeitsblatts zu prüfen, ist die Verwendung der ProtectContents-Eigenschaft:

Sub CheckIfTableIsProtected()
    Dim myTable As ListObject
    ' Setze die Tabelle, die Du überprüfen möchtest
    Set myTable = ActiveSheet.ListObjects("Tabelle16")

    ' Prüfen, ob die Tabelle geschützt ist
    If myTable.ProtectContents Then
        MsgBox "Die Tabelle ist geschützt."
    Else
        MsgBox "Die Tabelle ist nicht geschützt."
    End If
End Sub

Praktische Beispiele

  1. Einfacher Schutz eines Arbeitsblatts
    Um ein Arbeitsblatt zu schützen, kannst Du den folgenden Code verwenden:
Sub ProtectSheet()
    Worksheets("Tabelle16").Protect Password:="deinpasswort"
End Sub
  1. Entfernen des Schutzes
    Um den Schutz zu entfernen, verwende:
Sub UnprotectSheet()
    Worksheets("Tabelle16").Unprotect Password:="deinpasswort"
End Sub

Tipps für Profis

  • UserInterfaceOnly: Wenn Du den Schutz eines Blattes aktivierst, aber dennoch Programmcode ausführen möchtest, setze UserInterfaceOnly:=True. Dadurch bleibt der Schutz aktiv, aber VBA kann weiterhin Änderungen vornehmen.
ActiveSheet.Protect UserInterfaceOnly:=True
  • Verwende With-Anweisungen: Dies kann den Code lesbarer machen und die Leistung verbessern, insbesondere wenn Du mehrere Eigenschaften eines Objekts ändern möchtest.
With Tabelle16
    .Unprotect
    Rows("72:75").EntireRow.Hidden = False
    .Protect
End With

FAQ: Häufige Fragen

1. Wie kann ich den Schutz eines Arbeitsblatts aufheben, wenn ich das Passwort vergessen habe?
Leider gibt es keine einfache Möglichkeit, ein Passwort zurückzusetzen, wenn Du es vergessen hast. Du könntest in Betracht ziehen, eine Sicherungskopie Deiner Datei zu verwenden.

2. Kann ich nur bestimmte Bereiche eines Arbeitsblatts schützen?
Ja, Du kannst bestimmte Bereiche mit Hilfe von AllowEditRanges schützen und nur bestimmten Benutzern erlauben, diese zu bearbeiten.

3. Was passiert mit Makros, wenn ein Arbeitsblatt geschützt ist?
Wenn das Arbeitsblatt geschützt ist, können die meisten Makros nicht auf geschützte Bereiche zugreifen. Du musst den Schutz vor dem Ausführen von Makros aufheben.

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