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

Forumthread: Blattschutz mit VBA aufheben und setzen

Blattschutz mit VBA aufheben und setzen
18.11.2013 12:31:49
Dominic
Hi Leute,
ich habe folgende Makros:
Sub Blattschutz()
ActiveSheet.Protect Password:="TestPW", UserInterfaceOnly:=True, DrawingObjects:=True,  _
Contents:=True, Scenarios:=True
End Sub

Sub BlattschutzAus()
ActiveSheet.Unprotect Password:="TestPW"
End Sub

Und im folgenden Makro möchte ich zunächst den Blattschutz aufheben, damit Excel die Spalten & Zeilen ausblenden kann, danach soll der Blattschutz wieder gesetzt werden.
Das funktioniert bei mir jedoch nicht.
Woran liegt das?
Sub SpalteAusblenden()
Call BlattschutzAus
If [H4] = 1 Then
Range("F:J").EntireColumn.Hidden = True
Range("7:8").EntireRow.Hidden = True
Range("E6").Select
ActiveCell.FormulaR1C1 = "100%"
Range("E7").Select
ActiveCell.FormulaR1C1 = "0%"
Range("E8").Select
ActiveCell.FormulaR1C1 = "0%"
ElseIf [H4] = 2 Then
Range("F:J").EntireColumn.Hidden = True
Range("F:G").EntireColumn.Hidden = False
Range("8:8").EntireRow.Hidden = True
Range("7:7").EntireRow.Hidden = False
Range("E6").Select
ActiveCell.FormulaR1C1 = "80%"
Range("E7").Select
ActiveCell.FormulaR1C1 = "20%"
Range("E8").Select
ActiveCell.FormulaR1C1 = "0%"
ElseIf [H4] = 3 Then
Range("F:J").EntireColumn.Hidden = True
Range("F:I").EntireColumn.Hidden = False
Range("6:8").EntireRow.Hidden = False
Range("E6").Select
ActiveCell.FormulaR1C1 = "50%"
Range("E7").Select
ActiveCell.FormulaR1C1 = "35%"
Range("E8").Select
ActiveCell.FormulaR1C1 = "15%"
End If
Range("A1:I56").Calculate
Call Blattschutz
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz mit VBA aufheben und setzen
18.11.2013 12:50:22
Klaus
Hi Dominic,
"Userinterfaceonly = true" bedeutet, dass VBA auch bei geschütztem Blatt herumändern darf wie es möchte. Es sollte also so wie es ist bereits funktionieren.
Ich vermute, dein Fehler liegt woanders als im Blattschutz! Kannst du die Datei hochladen?
Grüße,
Klaus M.vdT.

Anzeige
AW: Blattschutz mit VBA aufheben und setzen
18.11.2013 12:58:26
Dominic
Hi Klaus,
manchmal kann es so einfach sein. Dein Hinweis, dass "Userinterfaceonly = true" ermöglicht, dass VBA alles andere eigentlich durchführen kann, hat mich zur Problemlösung gebracht.
Meine Makros sind einem Formularsteuerelement zugewiesen, dessen Zellverknüpfung auf einer Zelle lag, die jedoch "geschützt" war. Als ich die Zelle gerade freigegeben habe funktioniert mein Makro zum Spalten ausblenden nun auch bei aktiviertem Blattschutz.
Danke! :)

Anzeige
AW: Blattschutz mit VBA aufheben und setzen
18.11.2013 13:00:55
Dominic
Und das Formularsteuerelement kann selbst auch geschützt werden. Das hatte ich nicht bedacht. Funktioniert nun alles wie gewünscht.

Danke für RÜ, und weiteres ...
18.11.2013 13:17:29
Klaus
Hallo Dominic,
freut mich dich zur Selbsthilfe angestoßen zu haben, danke für die Rückmeldung!
Aber wenn wir schon dabei sind, brennen mir ein paar Sachen unter den Fingernägeln:
1) bitte auf "select" und "activate" verzichten, dass sind echte Bremsen!
2) wenn du nicht auf eine R1C1-Formel verweist, benutzte Value statt FormulaR1C1
3) statt Range(XX).entireRow/EntireColumn verwende direkt Rows und Columns
4) nicht [H4] notieren, das bremst auch nur.
5) IF/ElseIf ist gut, aber CaseSelect ist übersichtlicher.
6) Vergiss die Punkte 1-5, solange du dir mit dem Makrorekorder selber helfen kannst machst du alles richtig!
Hier mal der überarbeitete Code:
Sub SpalteAusblenden()
'Call BlattschutzAus
Select Case Range("H4").Value
Case 1
Columns("F:J").Hidden = True
Rows("7:8").EntireRow.Hidden = True
Range("E6").Value = "100%"
Range("E7").Value = "0%"
Range("E8").Value = "0%"
Case 2
Columns("F:J").Hidden = True
Columns("F:G").Hidden = False
Rows("8:8").Hidden = True
Rows("7:7").Hidden = False
Range("E6").Value = "80%"
Range("E7").Value = "20%"
Range("E8").Vale = "0%"
Case 3
Columns("F:J").Hidden = True
Columns("F:I").Hidden = False
Rows("6:8").Hidden = False
Range("E6").Value = "50%"
Range("E7").Value = "35%"
Range("E8").Value = "15%"
Case Else
MsgBox ("Bitte einen Wert in H4 eingeben!")
End Select
Range("A1:I56").Calculate
'Call Blattschutz
End Sub
Grüße,
Klaus M.vdT.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Blattschutz mit VBA aufheben und wieder setzen


Schritt-für-Schritt-Anleitung

Um den Blattschutz in Excel mit VBA aufzuheben und anschließend wieder zu setzen, kannst du die folgenden Schritte befolgen:

  1. Makro zum Blattschutz aufheben erstellen:

    Sub BlattschutzAus()
       ActiveSheet.Unprotect Password:="TestPW"
    End Sub
  2. Makro zum Blattschutz setzen erstellen:

    Sub Blattschutz()
       ActiveSheet.Protect Password:="TestPW", UserInterfaceOnly:=True
    End Sub
  3. Makro für das Ausblenden von Spalten: Um den Blattschutz temporär aufzuheben und dann Spalten auszublenden, kannst du folgendes Makro verwenden:

    Sub SpalteAusblenden()
       Call BlattschutzAus
       If [H4] = 1 Then
           Range("F:J").EntireColumn.Hidden = True
       End If
       Call Blattschutz
    End Sub

Häufige Fehler und Lösungen

  • Problem: Das Makro funktioniert nicht, obwohl der Blattschutz aufgehoben wurde.

    • Lösung: Überprüfe, ob die Zellen, die das Makro ändert, selbst geschützt sind. Der Blattschutz kann nur aufgehoben werden, wenn die Zellen frei sind.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Stelle sicher, dass das Passwort korrekt ist und dass die Syntax der VBA-Befehle stimmt.

Alternative Methoden

Wenn du den Blattschutz aufheben möchtest, ohne VBA zu verwenden, kannst du dies auch manuell tun:

  1. Wähle das geschützte Blatt aus.
  2. Gehe zu „Überprüfen“ in der Menüleiste.
  3. Klicke auf „Blattschutz aufheben“ und gib das Passwort ein.

Für automatisierte Prozesse empfehlen sich jedoch VBA-Makros, wie sie bereits beschrieben wurden.


Praktische Beispiele

Ein einfaches Beispiel, das den Blattschutz aufhebt, um Daten zu bearbeiten und anschließend wieder zu aktivieren:

Sub DatenBearbeiten()
    Call BlattschutzAus
    ' Daten bearbeiten
    Range("A1").Value = "Neuer Wert"
    Call Blattschutz
End Sub

Nutze diese Struktur, um komplexere Aufgaben zu automatisieren, indem du verschiedene Makros kombinierst.


Tipps für Profis

  • Vermeide Select und Activate: Diese Befehle können den Code verlangsamen.
  • Nutze Value anstelle von FormulaR1C1, wenn du keine komplexen Formeln benötigst.
  • Verwende Select Case anstelle von If/ElseIf für bessere Übersichtlichkeit.
  • Teste deine Makros regelmäßig in einer Kopie deiner Datei, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Blattschutz aufheben, wenn ich das Passwort vergessen habe? Leider gibt es keine offizielle Methode, um den Blattschutz ohne Passwort aufzuheben. Du kannst jedoch versuchen, VBA-Tools oder Drittanbieter-Software zu verwenden.

2. Funktioniert der Blattschutz auch in älteren Excel-Versionen? Ja, die grundlegenden VBA-Befehle für den Blattschutz sind in den meisten Excel-Versionen gleich. Stelle sicher, dass du die richtige Syntax verwendest.

3. Kann ich den Blattschutz auch für bestimmte Zellen aufheben? Ja, du kannst beim Setzen des Blattschutzes bestimmte Zellen als bearbeitbar markieren, indem du den Parameter AllowEditRanges verwendest.

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