Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen mit VBA sperren und entsperren

Forumthread: Zellen mit VBA sperren und entsperren

Zellen mit VBA sperren und entsperren
28.08.2013 23:12:16
Justi
Hallo zusammen,
ich habe eine Excel-Tabelle (Blattschutz aktiv) in der von verschiedenen Bearbeitern Daten eingetragen werden. Die eingetragenen Daten werden durch einen zweiten Bearbeiter geprüft. Ist der Eintrag OK, wird in einer Zelle nach den Einträgen ein "c" eingetragen. Nun möchte ich das die Zellen (n-3) und (n-4),in Relation zur Zelle in der "c" eigetragen wurde, gesprerrt werden (pro Zeile gibt es 30 solcher "Kontrollspalten").
Muss ein Zelleneintrag doch nochmal geändert werden, wäre es super wenn die Zellen (n-3) und (n-4) wieder entsperrt werden, wenn die Zelle von "c" auf "-" umgestellt wird. Das soll nur von bestimmten Personen gemacht werden können, daher sollte das Umstellen von "c" auf "-" nur nach Paßwortabfrage möglich sein.
Ist das mit VBA realisierbar? Es wäre toll, wenn mir jemand weiterhelfen kann. Ich habe nämlich nicht wirklich Ahnung von VBA.
Viele Grüße
Justi

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zellen mit VBA sperren und entsperren
29.08.2013 09:48:14
Bastian
Hallo Justi,
sind die Kontrollspalten fix? Z. B. Spalte F ist Kontrollspalte, oder sind die Kontrollzellen in jeder Zeile unterschiedlich?
Mit anderen Worten: Kann ich die Kontrollzellen im Makro mit absoluten Bezügen ansprechen, oder muss ich die suchen?
Gruß, Bastian

AW: Zellen mit VBA sperren und entsperren
30.08.2013 08:15:10
Justi
Hallo Bastian,
vielen Dank für Deine Antwort. Die Kontrollspalten sind fest für jede Zeile!
Viele Grüße
Justi

Anzeige
AW: Zellen mit VBA sperren und entsperren
30.08.2013 11:40:35
Bastian
Hallo Justi,
hier mal ein Code, bei dem egal ist, wo die Kontrollzellen sind.
Du musst den Code (ab Option Explicit) ins Codefenster der Tabelle1 kopieren: Rechter Mausklick auf Tabelle1 => Code anzeigen.
Das Makro funktioniert etwa so:
Ausgangssituation: Blattschutz eingeschaltet, aber alle Zellen entsperrt.
Sobald in eine beliebige Zelle in "Tabelle1" in Range("A:P") (musst Du an zwei Stellen im Code anpassen) ein "C" eingegeben wird, werden die 3. und 4. Zelle links davon gesperrt.
Sobald versucht wird, eine Zelle mit einem "C" drin zu überschreiben, wird ein Passwort abgefragt (z.Z. "1234"). Auch dieses kannst Du im Code anpassen. Bei falschem Passwort bleibt das "C" in der Zelle und die Zellen relativ dazu gesperrt
Das "C" wird klein- oder großgeschrieben akzeptiert.
Option Explicit
Dim strAlterWert As String
Dim strPasswort As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = "C" Or Target.Value = "c" Then
ActiveSheet.Unprotect
Target.Offset(0, -3).Locked = True
Target.Offset(0, -4).Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If strAlterWert = "C" Or strAlterWert = "c" Then
strPasswort = InputBox("Bitte Passwort eingeben")
Select Case strPasswort
Case "1234"
ActiveSheet.Unprotect
Target.Offset(0, -3).Locked = False
Target.Offset(0, -4).Locked = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Case Else
Application.EnableEvents = False
Target.Value = strAlterWert
Application.EnableEvents = True
Exit Sub
End Select
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
strAlterWert = Target.Value
End Sub

Hier nochmal die Zeilen, die angepasst werden müssen:
An zwei Stellen der Bereich, für den das Makro gültig sein soll:
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
Und das Passwort:
Case "1234"
Gruß, Bastian

Anzeige
AW: Zellen mit VBA sperren und entsperren
01.09.2013 21:46:54
Justi
Hallo Bastian,
der Code funktioniert super, genauso hatte ich mir das vorgestellt.
Vielen, vielen Dank für Deine Hilfe.
Viele Grüße
Justi
;
Anzeige
Anzeige

Infobox / Tutorial

Zellen mit VBA sperren und entsperren in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Tabelle, in der du die Zellen sperren und entsperren möchtest.
  2. Aktiviere den Blattschutz, indem du unter dem Reiter "Überprüfen" auf "Blatt schützen" klickst.
  3. Öffne den VBA-Editor, indem du ALT + F11 drückst.
  4. Finde die Tabelle, in der du arbeiten möchtest. Klicke mit der rechten Maustaste auf den Namen der Tabelle (z.B. "Tabelle1") und wähle "Code anzeigen".
  5. Füge den folgenden VBA-Code in das Codefenster ein:
Option Explicit
Dim strAlterWert As String
Dim strPasswort As String

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Value = "C" Or Target.Value = "c" Then
        ActiveSheet.Unprotect
        Target.Offset(0, -3).Locked = True
        Target.Offset(0, -4).Locked = True
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End If
    If strAlterWert = "C" Or strAlterWert = "c" Then
        strPasswort = InputBox("Bitte Passwort eingeben")
        Select Case strPasswort
            Case "1234"
                ActiveSheet.Unprotect
                Target.Offset(0, -3).Locked = False
                Target.Offset(0, -4).Locked = False
                ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
            Case Else
                Application.EnableEvents = False
                Target.Value = strAlterWert
                Application.EnableEvents = True
                Exit Sub
        End Select
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
    strAlterWert = Target.Value
End Sub
  1. Passe den Code an, wenn nötig. Ändere den Bereich Range("A:P") auf die gewünschten Spalten und das Passwort "1234" auf dein gewünschtes Passwort.
  2. Teste das Makro, indem du in eine Zelle "C" eingibst und die entsprechenden Zellen (n-3 und n-4) sperrst.

Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht.

    • Lösung: Stelle sicher, dass der Blattschutz aktiv ist und die Zellen, die du schützen möchtest, nicht bereits gesperrt sind.
  • Fehler: Passwortabfrage funktioniert nicht.

    • Lösung: Überprüfe, ob du das Passwort im Code korrekt eingegeben hast.

Alternative Methoden

Eine alternative Methode, um gesperrte Zellen in Excel zu entsperren oder zu sperren, ist die Verwendung von Excel-Formeln oder Bedingter Formatierung. Diese Methoden bieten jedoch nicht den gleichen Schutz wie VBA, da sie nicht vor dem Bearbeiten durch unbefugte Benutzer schützen.


Praktische Beispiele

Ein praktisches Beispiel für das Sperren von Zellen könnte in einer Produktionsübersicht sein, wo bestimmte Zellen nur von Vorgesetzten geändert werden dürfen. Mit dem oben genannten VBA-Code kannst du sicherstellen, dass nur autorisierte Benutzer die gesperrten Zellen entsperren können.


Tipps für Profis

  • Verwende komplexe Passwörter, um unbefugten Zugriff zu verhindern.
  • Teste den VBA-Code in einer Kopie deiner Datei, um Datenverluste zu vermeiden.
  • Halte deine Excel-Version aktuell, um sicherzustellen, dass alle VBA-Funktionen reibungslos funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich gesperrte Zellen in Excel entsperren?
Du kannst gesperrte Zellen entsperren, indem du den Blattschutz aufhebst und dann die Zellen manuell entsperrst.

2. Welche Excel-Versionen unterstützen VBA?
VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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