ich habe ein Problem mit meinen VB-Makros.
Eins von beiden erstellt einen Passwortschutz für alle Tabellenblätter im Dokument, das andere entfernt den Schutz dementsprechend. Damit verbunden ist die vorherige Eingabe des Passwortes per MsgBox. Dieses Passwort wird in eine Variable übergeben und mit einer Stringkonstante, das dem Passwort entspricht, verglichen.
Hier der Code (steht in "diese_Arbeitsmappe", nicht in einem extra Modul):
Sub Schutz_aller_Blaetter()
Dim blatt As Integer
Dim passwort As String
passwort = InputBox("Bitte Passwort eingeben: ", "Passwortabfrage")
If passwort kennwort Then
MsgBox ("Falsches Passwort!")
Else
For blatt = 1 To Worksheets.Count
Sheets(blatt).Activate
ActiveSheet.Protect (kennwort)
Next blatt
End If
End Sub
Sub Schutz_aufheben()
Dim passwort As String
Dim blatt As Integer
passwort = InputBox("Bitte Passwort eingeben: ", "Passwortabfrage")
If passwort kennwort Then
MsgBox ("Falsches Passwort!")
Else
For blatt = 1 To Worksheets.Count
Sheets(blatt).Activate
ActiveSheet.Unprotect (kennwort)
Next blatt
End If
End Sub
Die Konstante "kennwort" hab ich in einem extra Modul global definiert:
Public Const kennwort As String = "test"
In einer leeren Arbeitsmappe funktionieren die Makros; in meiner aktiven Exceldatei allerdings kommt beim Entfernen des Blattschutzes nur die Fehlermeldung 400 (beim Aufruf des Makros aus Excel) bzw. "Laufzeitfehler 1004: Anwendungs- / objektorientierter Fehler" (Start aus VB).
Hat jemand ne Idee, woher der Fehler kommt?
Danke!