Clever-Excel-Forum

Normale Version: VBA Code für Blattentsperrung mit Passwort + Zurückspringen auf 1. Tabellenblatt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

vorab eine Entschuldigung an alle Profis: Ich habe leider kaum VBA-Kenntnisse und stelle daher vielleicht die ein oder andere "dumme" Frage (und ja: es gibt dumme Fragen ;) ).

Ich arbeite zur Zeit mit einer Mac-365-Version (16.43).

Hintergrund:
Meine Arbeitsmappe (ca. 20 Blätter) wird von vielen unterschiedlichen Abteilung benutzt, wovon manche nur Input-Zellen betätigen sollen - daher brauche ich einen Blattschutz, der sich leicht aktivieren/deaktivieren (mit Passwort) lässt.

Dafür habe ich aktuell auf dem 1. Blatt ("Inhaltsverzeichnis") zwei Schaltflächen einfügt und mit je einem Code hinterlegt für die Aktivierung des Blattschutzes (funktioniert 1a) und der Deaktivierung des Blattschutzes für die gesamte Datei mit Passworteingabe (funktioniert noch nicht so wie ich es haben möchte):

Fragen:
1) Zwar wird der Blattschutz durch die korrekte Passworteingabe aufgehoben, allerdings lande ich nach Ausführung des Makros auf dem letzten Tabellenblatt. Ich würde aber gerne wieder auf dem Inhaltsverzeichnis landen. Wie bekomme ich das hin?

Der aktuell verwendete Code lautet:

Sub AlleBlaetter_Schutzaufhebung()

Dim varAntwort As Variant
Dim WS As Worksheet

varAntwort = Application.InputBox("Bitte Passwort eingeben", "Passworteingabe", "")
If varAntwort = False Then Exit Sub

On Error GoTo ErrorHandler
For Each WS In ThisWorkbook.Worksheets
    WS.Unprotect varAntwort
Next WS

Exit Sub
ErrorHandler:
MsgBox "falsches Passwort"


End Sub



2) Gibt es zudem eine Möglichkeit, dass man bei Öffnung der Datei immer automatisch auf dem Inhaltsverzeichnis (1. Tab in der Datei) landet?

3) Kann man eigentlich die Schaltflächen in der Mac-Version "aufhübschen"? Dieses 90er Jahre Windows-Grau hat zwar seinen Retro-Charme, passt aber sonst optisch überhaupt nicht in die Arbeitsmappe ;)

Vielen Dank für die Hilfe! Ich weiß das sehr zu schätzen!

VG
Thomas
Hallöchen,

1) schlimmstenfalls aktivierst Du das Blatt am Ende : Sheets("Inhaltsverzeichnis").Activate

2) Du kannst Dir einige Stellen aussuchen, wo Du in das Blatt wechselst. In DieseArbeitsmappe gibt es ein paar Ereignismakros wie
--> Workbook_Open
--> Workbook_BeforeSave
--> Workbook_AfterSave
Sofern ein User die Mappe mit deaktivierten Makros öffnet, nutzt das aber nix. Aber dann will er vielleicht auch die Vorzüge nicht nutzen Smile

3) Kann man eventuell in MAC wie in Windows andere Objekte mit Makros versehen, z.B. bunte Rechtecke mit runden Ecken Smile Smile ?
Vielen Dank für deinen Input, schauaun.

Zu 1): Ich habe das Sheets("Inhaltsverzeichnis").Activate am Ende des Codes eingefügt, aber es tut sich nichts :(

Sub AlleBlaetter_Schutzaufhebung()

Dim varAntwort As Variant
Dim WS As Worksheet

varAntwort = Application.InputBox("Bitte Passwort eingeben", "Passworteingabe", "")
If varAntwort = False Then Exit Sub

On Error GoTo ErrorHandler
For Each WS In ThisWorkbook.Worksheets
    WS.Unprotect varAntwort
Next WS

Exit Sub
ErrorHandler:
MsgBox "falsches Passwort"

Sheets("Inhaltsverzeichnis").Activate

End Sub


zu 2): Hier bin ich leider überfragt, wie ich ein Ereignismakro einstellen kann? Ich habe unter "Entwicklertools" ganz links oben auf "Visual Basic" geklickt und sehe dann links eine Übersicht, wo unter anderem "DieseArbeitsmappe" steht. Wo kann hier hier jetzt auswählen, dass man bei jedem Öffnen auf dem Inhaltsverzeichnis landet?

zu 3): Danke, das funktioniert! Wieder etwas dazu gelernt :)

VG
Thomas
Hallöchen,

1) mach das mal über Exit Sub. Ganz runter kommst Du nur, wenn ein Fehler auftritt.

2) wenn Du Diese... anklickst / doppelklickst, sollte ein Codefenster aufgehen. Dort hast Du oben zwei Auswahlboxen ...

3) freut mich Smile
1) Perfekt, das läuft jetzt! Vielen Dank!

2) Wenn ich "DieseArbeitsmappe" anklicke, öffnet sich das Codefenster mit den zwei Drop-Down Menüs (rechts: "(Deklaration)", links: ("(Allgemein)" bzw. "Workbook" als Auswahlmöglichkeit).

Wenn ich jetzt auf Workbook klicke, kommt die Fehlermeldung: "Die Variable verwendet einen in Visual Basic nicht unterstützten Automatisierungstyp". Huh

Muss ich hier zuvor etwas aktivieren? 

Vielen Dank für deinen großartigen Support!
VG
Hat jemand vielleicht noch eine Richtung, in die er mich stubsen könnte, damit ich das Thema vor Weihnachten erledigen kann?

Vielen Dank!
Hallöchen,

an der Stelle ist mir auch noch kein Fehler untergekommen ... Da müsste man sich eventuell mal die Mappe ansehen.