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

Probleme mit Sheet().unprotect in VBA

Forumthread: Probleme mit Sheet().unprotect in VBA

Probleme mit Sheet().unprotect in VBA
08.06.2005 10:55:36
Jochen
Hallo,
nachdem ich hier schon viele nützliche Informationen gefunden habe, hoffe ich jemand kann mir auch bei meinem problem weiterhelfen.
Folgendes:
Ich habe ein Dokument, welches per VBA-Skript in abhängigkeit von einem Faktor in bestimmten Zellen die Bedingte formatierung löschen/erstellen soll.
Dies geht auch hervorragend. Problem ist nun aber, dass ich gerne die Zellen Schützen würde und nur die Zellen während des einsatzes vom VBA-Skript ungeschützt lassen würde.
Hierfür müssten theoretisch die Aufrufe:
Activesheet.unprotect passwort:="passwort"
und
Activesheet.protect passwort:="passwort"
reichen.
In meinem Aufruf funktioniert der 'protect'-befehl einwandfrei, innerhalb des vba-codes geht allerdings der 'unprotect'befehl nicht
Mach ich einen eigenständigen Button mit dem 'Unprotect'-Befehl geht das ganze auch wunderbar.
Nun zur Frage:
Sieht jemand im angehängten Code den Fehler?

Sub on_change_phase()
Dim val1 As Integer
Dim selrange As String
Dim comprange As String
Dim helpvar As String
'unprotect the worksheet for the macro DON'T USE THE PASSWORD FOR EDITING THE FILE
Sheets("WP Report").Activate                'dies scheint nicht zu funktionieren ...
ActiveSheet.Unprotect password:="dontuse"   ' Warum?
'Sheets("WP Report").Unprotect password:="dontuse"
'ActiveSheet.Unprotect password:="dontuse"
val1 = Range("AX64").Value + 62
'reading the value of the dropdown-menue
helpvar = CStr(val1)
'helpvar = Integer to String (val1)
selrange = Range("AY" + helpvar).Value
'reading in the range of the cells which should be formated
comprange = Range("AZ64").Value
'reading in the complete range of all cells (for deleting the FormatConditions)
Call Phase(selrange, comprange)
ActiveSheet.Protect password:="dontuse"
End Sub


Function Phase(selrange, comprange)
Dim countdel As Integer
Dim count_i As Integer
Dim area As String
Dim helpvar2 As String
'unprotect the worksheet
'ActiveSheet.Unprotect password:="dontuse"
'next 2 lines: delete the FormatConditions (from previous use of the file)
Range(comprange).Select
Selection.FormatConditions.Delete
'next 10 lines: make new FormatConditions (only for selected cells/phases)
Range(selrange).Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""-"""
Selection.FormatConditions(1).Interior.Pattern = xlNone
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="0,95"
Selection.FormatConditions(2).Interior.ColorIndex = 4
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0", Formula2:="0,949"
Selection.FormatConditions(3).Font.ColorIndex = 2
Selection.FormatConditions(3).Interior.ColorIndex = 3
'next 10 lines: delete the format (colour) of the gaps between the Phases which where formated before
counter_i = 0
countdel = Range("BB63").Value
Do
helpvar2 = CStr((63 + counter_i))
area = Range("BA" + helpvar2).Value
Range(area).Select
Selection.FormatConditions.Delete
counter_i = counter_i + 1
Loop Until counter_i = (countdel)
'protect the worksheet
'ActiveSheet.Protect Password:="dontuse"
End Function

Danke für die Antworten
Jochen
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Sheet().unprotect in VBA
08.06.2005 11:19:13
Thomas
Gleiches Problem habe ich auch schon ewig
Bin auch über jede Antwort dankbar!!
Thomas
AW: Probleme mit Sheet().unprotect in VBA
08.06.2005 11:21:01
Hajo_Zi
Hallo Jochen,
hast Du den Code schon mal im Einzelschritt laufen lassen. Ich vermute der Code wird abgebrochen und damit wird die Zeile ActiveSheet.Protect password:="dontuse"
nicht abgearbeitet.
Im Forum sollte man keine Passwörter posten.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem Windows 2000 SP4 und Excel Version 2000 SP3.


Anzeige
AW: Probleme mit Sheet().unprotect in VBA
08.06.2005 11:42:39
Jochen
So, danke für die Schnelle Antwort.
zum passowrt: das ist recht egal hier, da das nicht das passwort ist welches ich nutze (aber danke trotzdem, sicher ist sicher)
Der Code läuft komplett durch und sagt nix von wegen fehler. Das sehe ich daran, dass wenn ich vom ganzen Blatt den schutz entferne ist nach demj click des buttons der schutz wieder drauf und dieser befehl wird als letzter Befehl auzsgeführt.
Bisher kann ich mir nur noch denklen, dass irgendwas mit dem Activvesheet nicht stimmt . Ist dieser vielleicht nicht aktiv?
Anzeige
AW: Probleme mit Sheet().unprotect in VBA
08.06.2005 11:49:26
Jochen
oh man ich hab die Lösung gerade gefunden.
Ich wusste nicht wie genau der vba gehandelt wird (wann er ausgeführt wird) und hab wohl auch nicht wirklich nachgedacht.
Das Problem war:
Ich hab nen Kombinationsfeld zum auswählen genommen und darauf das Makro gelegt. Natürlich hab ich vergessen, dass die Zelle, wo der Wert des Combinationsfeld geschreiben werden soll NICHT GESPERRT sein darf. Demnach war der fehler, dass ich mein Kombinationsfeld nicht ändern konnte, der Code ist wohl richtig durchgelaufen.
Vielen Dank an alle die sich über mein Problem den Kopf zerbrochen haben.
Gruß
Jochen
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Probleme mit Sheet().unprotect in VBA


Schritt-für-Schritt-Anleitung

  1. Aktiviere das Arbeitsblatt, das du unprotecten möchtest:

    Sheets("WP Report").Activate
  2. Unprotect das Arbeitsblatt mit folgendem Befehl:

    ActiveSheet.Unprotect password:="deinpasswort"
  3. Führe deine gewünschten VBA-Befehle aus, während das Arbeitsblatt ungeschützt ist.

  4. Protect das Arbeitsblatt am Ende wieder:

    ActiveSheet.Protect password:="deinpasswort"

Stelle sicher, dass du das richtige Passwort verwendest. Bei Verwendung von Excel VBA Unprotect Sheet mit Passwort kann es wichtig sein, dass die korrekte Schreibweise beachtet wird.


Häufige Fehler und Lösungen

  • Fehler: ActiveSheet.Unprotect funktioniert nicht.

    • Lösung: Überprüfe, ob das Arbeitsblatt tatsächlich aktiv ist. In manchen Fällen kann es helfen, direkt auf das Arbeitsblatt zuzugreifen:
      Sheets("WP Report").Unprotect password:="deinpasswort"
  • Fehler: Der Schutz wird nicht entfernt.

    • Lösung: Stelle sicher, dass du das Arbeitsblatt nicht durch andere VBA-Prozesse blockierst oder dass keine anderen Makros gleichzeitig laufen. Führe den Code im Einzelschritt aus, um den Ablauf zu verfolgen.

Alternative Methoden

  • Verwendung von ThisWorkbook:

    ThisWorkbook.Sheets("WP Report").Unprotect password:="deinpasswort"
  • Direkter Zugriff auf die Zellen: Anstelle von ActiveSheet, verwende den direkten Zellbezug, um sicherzustellen, dass du die gewünschte Zelle bearbeitest.


Praktische Beispiele

Hier ist ein Beispiel, wie du ein Arbeitsblatt unprotecten und dann wieder protecten kannst:

Sub Beispiel_Unprotect()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("WP Report")

    ' Unprotect das Arbeitsblatt
    ws.Unprotect password:="deinpasswort"

    ' Führe hier deine VBA-Befehle aus

    ' Protect das Arbeitsblatt wieder
    ws.Protect password:="deinpasswort"
End Sub

Dieses Beispiel zeigt die Verwendung von Excel VBA Sheet Protect und Excel Unprotect in einer klaren Struktur.


Tipps für Profis

  • Verwende Try-Catch-Strukturen, um Fehler zu handhaben und sicherzustellen, dass dein Code robust ist.
  • Halte deine Passwörter sicher und verwende nicht die gleichen Passwörter für verschiedene Arbeitsblätter.
  • Nutze Debugging-Tools in VBA, um Probleme schneller zu identifizieren.

FAQ: Häufige Fragen

1. Wie schütze ich ein Arbeitsblatt mit einem Passwort? Um ein Arbeitsblatt mit einem Passwort zu schützen, kannst du den folgenden Befehl verwenden:

ActiveSheet.Protect password:="deinpasswort"

2. Was mache ich, wenn ich das Passwort vergessen habe? Es gibt keine einfache Möglichkeit, ein Passwort in Excel zu entschlüsseln. Du solltest sicherstellen, dass du deine Passwörter sicher aufbewahrst.

3. Gibt es eine Möglichkeit, ein Arbeitsblatt ohne Passwort zu unprotecten? Ja, du kannst ein Arbeitsblatt unprotecten, wenn es keinen Schutz oder kein Passwort hat:

ActiveSheet.Unprotect

4. Warum funktioniert ActiveSheet.Unprotect in meinem Makro nicht? Überprüfe, ob das Arbeitsblatt aktiv ist und dass der Schutz tatsächlich aktiviert ist. Manchmal kann auch ein Fehler im Code dazu führen, dass die Zeile nicht erreicht wird.

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