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

Forumthread: einzelne Zellen per Passwort entsperren, VBA

einzelne Zellen per Passwort entsperren, VBA
Evil-Steve
Hallo zusammen,
in einem schreibgeschützten Tabellenblatt sollen mehrere Personen ihre Daten eintragen können. Jede Person bekommt ein persönliches Passwort. Nach der Passwortabfrage sollen die Personen nur den diesem Passwort zugewiesenen Zellbereich bearbeiten können. Habe mir hierzu einen VBA-Code zusammengesucht und angepasst, der nur bestimmte Zellbereiche entsperrt. Leider klappt das aber noch nicht so ganz mit den verschiedenen Passwörtern - arbeite hier mit einer Select Case Anweisung.
Hier mein (bisgeriger) Code:

Option Explicit
Public Const strPwBlattschutz_0xxx As String = "Geheim00" 'Zentrales Passwort für Blattschutz
Const strPWBereichsschutz_0315 As String = "Geheim01" 'Passwort für Datenerfassung
Const strPWBereichsschutz_320 As String = "Geheim02" 'Passwort für Datenerfassung
Const strPWBereichsschutz_325 As String = "Geheim03" 'Passwort für Datenerfassung
Const strBereich_0xxx As String = "D10:I13” 'Datenbereich der zur Bearbeitung freigegeben wird
Const strBereich_0315 As String = "D10:I10“
Const strBereich_0320 As String = "D11:I11”
Const strBereich_0325 As String = "D12:I12”
Function KST_Verteilung_bearbeiten()
Dim Eingabewert As String
Eingabewert = InputBox("Bitte Passwort zur Bearbeitung eingeben!", "Passwortabfrage")
Select Case Eingabewert
Case Eingabewert = strPWBereichsschutz_0315
With Sheets("Erfassung")
.Unprotect Password:=strPwBlattschutz_0xxx 'Blattschutz wird aufgehoben          _
.Range(strBereich_0315).Locked = False 'Zellschutz def. Datenbereich wird aufgehoben
.Protect Password:=strPwBlattschutz_0xxx 'Gesamter Blattschutz wird wieder  _
aktiviert
Case Eingabewert = strPWBereichsschutz_0320
With Sheets("Erfassung")
.Unprotect Password:=strPwBlattschutz_0xxx
.Range(strBereich_0320).Locked = False
.Protect Password:=strPwBlattschutz_0xxx
Case Eingabewert = strPWBereichsschutz_0325
With Sheets("Erfassung")
.Unprotect Password:=strPwBlattschutz_0xxx
.Range(strBereich_0325).Locked = False
.Protect Password:=strPwBlattschutz_0xxx
Case Else
MsgBox "Sie haben nicht die Berechtigung die KST-Verteilung zu bearbeiten!", vbCritical, _
"Fehler"
End Select
End Function

Sub KST_Verteilung_beenden()
ActiveSheet.Protect
End Sub
Wenn ich den Code durchlaufen lasse kommt die Fehlermeldung: „Fehler beim Kompilieren / Case ohne Select Case“. Bei der Fehlersuche stoße ich an meine VBA-Grenzen.
Kann mir bitte jemand helfen? Vielen Dank im Voraus.
Gruß,
Stefan
Anzeige

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

Betreff
Benutzer
Anzeige
AW: einzelne Zellen per Passwort entsperren, VBA
19.03.2010 10:48:03
Hajo_Zi
Hallo Stefan,
warum Code,
Register Überprüfen, Befehlsgrupe Änderungen, Benutzer dürfen Bereich bearbeiten.

AW: einzelne Zellen per Passwort entsperren, VBA
19.03.2010 12:03:23
Evil-Steve
Hallo,
vielen Dank für die schnellen Antworten. Funktionieren alle einwandfrei.
Hajos Lösung kannte ich noch nicht - cool!
Gruß,
Stefan
Anzeige
Es fehlt überall "End With"...
19.03.2010 10:48:51
Ramses
Hallo
With Sheets("Erfassung")
.Unprotect Password:=strPwBlattschutz_0xxx 'Blattschutz wird aufgehoben _
.Range(strBereich_0315).Locked = False 'Zellschutz def. Datenbereich wird aufgehoben
.Protect Password:=strPwBlattschutz_0xxx 'Gesamter Blattschutz wird wieder _
End With
Das musst du in allen Case-Anweisungen noch hinzufügen
Ausserdem sind deine Variablen im Dekalrationsbereich und code unterschiedlich
Deklaration
Const strPWBereichsschutz_320 As String = "Geheim02" 'Passwort für Datenerfassung
und im Code
Case Eingabewert = strPWBereichsschutz_0320
Gruss Rainer
Anzeige
AW: einzelne Zellen per Passwort entsperren, VBA
19.03.2010 10:50:56
Reinhard
Hallo Stefan,
With Sheets("Erfassung")
Select Case Eingabewert
Case strPWBereichsschutz_0315
.Unprotect Password:=strPwBlattschutz_0xxx
.Range(strBereich_0315).Locked = False
.Protect Password:=strPwBlattschutz_0xxx
Case strPWBereichsschutz_0320
.Unprotect Password:=strPwBlattschutz_0xxx
.Range(strBereich_0320).Locked = False
.Protect Password:=strPwBlattschutz_0xxx
Case strPWBereichsschutz_0325
.Unprotect Password:=strPwBlattschutz_0xxx
.Range(strBereich_0325).Locked = False
.Protect Password:=strPwBlattschutz_0xxx
Case Else
MsgBox "Sie haben nicht die Berechtigung die KST-Verteilung zu bearbeiten!",  _
vbCritical, _
"Fehler"
End Select
End With

Gruß
Reinhard
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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

Einzelne Zellen per Passwort entsperren in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um in Excel einzelne Zellen zu sperren mit Passwort und nur bestimmten Zellen freizugeben, kannst du folgenden VBA-Code verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei und gehe in den VBA-Editor (drücke ALT + F11).
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deinDateiname)", dann Einfügen > Modul.
  3. Kopiere folgenden Code in das Modul:
Option Explicit
Public Const strPwBlattschutz_0xxx As String = "Geheim00" 'Zentrales Passwort für Blattschutz
Const strPWBereichsschutz_0315 As String = "Geheim01" 'Passwort für Datenerfassung
Const strPWBereichsschutz_0320 As String = "Geheim02" 'Passwort für Datenerfassung
Const strPWBereichsschutz_0325 As String = "Geheim03" 'Passwort für Datenerfassung
Const strBereich_0315 As String = "D10:I10"
Const strBereich_0320 As String = "D11:I11"
Const strBereich_0325 As String = "D12:I12"

Function KST_Verteilung_bearbeiten()
    Dim Eingabewert As String
    Eingabewert = InputBox("Bitte Passwort zur Bearbeitung eingeben!", "Passwortabfrage")
    With Sheets("Erfassung")
        Select Case Eingabewert
            Case strPWBereichsschutz_0315
                .Unprotect Password:=strPwBlattschutz_0xxx
                .Range(strBereich_0315).Locked = False
                .Protect Password:=strPwBlattschutz_0xxx
            Case strPWBereichsschutz_0320
                .Unprotect Password:=strPwBlattschutz_0xxx
                .Range(strBereich_0320).Locked = False
                .Protect Password:=strPwBlattschutz_0xxx
            Case strPWBereichsschutz_0325
                .Unprotect Password:=strPwBlattschutz_0xxx
                .Range(strBereich_0325).Locked = False
                .Protect Password:=strPwBlattschutz_0xxx
            Case Else
                MsgBox "Sie haben nicht die Berechtigung die KST-Verteilung zu bearbeiten!", vbCritical, "Fehler"
        End Select
    End With
End Function
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe die Funktion KST_Verteilung_bearbeiten aus, um das Passwort einzugeben und die entsprechenden Zellen freizugeben.

Häufige Fehler und Lösungen

  • Fehler: "Case ohne Select Case"

    • Stelle sicher, dass du das Case korrekt schreibst, wie im Beispiel gezeigt. Der Select Case Block muss richtig geöffnet und geschlossen werden.
  • End With fehlt

    • Achte darauf, dass du nach jedem With-Block ein End With hinzufügst. Ohne dieses kann der Code nicht korrekt ausgeführt werden.

Alternative Methoden

Wenn du Excel nur bestimmte Zellen freigeben möchtest, ohne VBA zu verwenden, kannst du auch die integrierte Funktionalität von Excel nutzen:

  1. Markiere die Zellen, die du entsperren möchtest.
  2. Gehe zu Format Cells (Strg + 1) und aktiviere unter dem Tab "Protection" die Option "Locked" (deaktiviere sie für die gewünschten Zellen).
  3. Schütze das gesamte Arbeitsblatt über Überprüfen > Blatt schützen. Hier kannst du ein Passwort festlegen.

Praktische Beispiele

Angenommen, du hast ein Arbeitsblatt namens "Erfassung" und möchtest, dass Benutzer nur ihre eigenen Daten in bestimmte Zellen eingeben können:

  • Benutzer 1 kann nur die Zellen in D10:I10 bearbeiten.
  • Benutzer 2 hat Zugriff auf D11:I11.

Verwende den oben genannten Code, um sicherzustellen, dass nur die entsprechenden Bereiche entsperrt werden, nachdem das richtige Passwort eingegeben wurde.


Tipps für Profis

  • Verwende starke Passwörter, um die Sicherheit deiner Daten zu erhöhen.
  • Teste den Code in einer Kopie deiner Datei, bevor du ihn in einer produktiven Umgebung verwendest.
  • Halte deine VBA-Referenzen aktuell, um Kompatibilitätsprobleme zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich auch ein ganzes Arbeitsblatt mit einem Passwort schützen?
Ja, das kannst du tun, indem du unter Überprüfen > Blatt schützen ein Passwort festlegst.

2. Wie kann ich gesperrte Zellen wieder entsperren?
Du kannst gesperrte Zellen entsperren, indem du das Arbeitsblatt mit dem Passwort aufhebst und dann die Zellen auswählst und unter "Format Cells" die Option "Locked" deaktivierst.

3. Was mache ich, wenn ich das Passwort vergessen habe?
Leider gibt es keine einfache Möglichkeit, vergessene Passwörter in Excel zu recovern. Es ist ratsam, Passwörter sicher zu speichern oder regelmäßig Backups deiner Dateien zu erstellen.

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