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

Forumthread: Zellen sperren, wenn...

Zellen sperren, wenn...
11.04.2017 17:17:45
Christian
Hallo Zusammen,
mir wurde hier schon vielfach wunderbar weitergeholfen. Heute benötige ich für folgende Situation Unterstützung:
Wenn in Spalte BV in einer Zeile ab Zeile 18 eine 0 steht, sollen die Spalten K bis BR der gleichen Zeile gesperrt sein - natürlich nach Aktivierung des Blattschutzes. Es ist nicht erforderlich, dass dieses nach jeder Eingabe überprüft wird, sondern einmalig, wenn ich das Tabellenblatt ansteuere.
Ich habe mich bereits selbst versucht, über die locked=true Funktion, scheitere aber immer wieder.
Wer kann mir den richtigen Tipp geben?
Vielen Dank und viele Grüße
Christian
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren, wenn...
11.04.2017 17:51:06
ChrisL
Hi Christian
Was spricht gegen eine normale Gültigkeitsprüfung?
cu
Chris
AW: Zellen sperren, wenn...
11.04.2017 17:54:34
Christian
Hi Chris,
es geht dabei um die Berechtigung, Änderungen herbeizuführen. Die zu sperrenden Zellen sind bereits mit Inhalt gefüllt. Das schließt sich dann doch aus, oder?
Viele Grüße
Christian
AW: Zellen sperren, wenn...
11.04.2017 18:12:53
ChrisL
Hi Christian
Man könnte mutig sein und es einfach mal testen, aber leider ist meine Excel soeben abgestürzt ;)
benutzerdefinierte Bedingung
=$BV18=0
Stoppmeldung
cu
Chris
Anzeige
AW: Zellen sperren, wenn...
11.04.2017 18:32:45
Christian
Hi nochmal,
unabhängig vom Mut haben einige Zellen bereits eine Dropdown-Auswahl. Daher komme ich damit glaube ich nicht weiter.
Daher freue ich mich über jeden anderen Hinweis.
Viele Grüße
Christian
AW: Zellen sperren, wenn...
11.04.2017 18:47:22
ChrisL
Hi Christian
OK, bereits belegte Gültigkeitsprüfung ist ein Argument. Spätestens morgen gibts etwas mit VBA für dich...
bd
Chris
Anzeige
AW: Zellen sperren, wenn...
12.04.2017 08:24:32
ChrisL
Hi Christian
Vielleicht so...
Private Sub Worksheet_Activate()
Dim iZeile As Long
With ActiveSheet
.Unprotect
For iZeile = 18 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(iZeile, 74) = 0 And .Cells(iZeile, 74)  "" Then
.Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = True
Else
.Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = False
End If
Next iZeile
.Protect
End With
End Sub
cu
Chris
Anzeige
AW: Zellen sperren, wenn...
13.04.2017 10:53:28
Christian
Hallo Chris,
leider komme ich jetzt erst zum Testen. Es funktioniert!
Jetzt ist mir dabei allerdings aufgefallen, dass ich in einigen Spalten Formeln stehen habe, deren Zellen dann nicht mit .locked = false freigegeben werden sollen. Kann man das noch einschränken?
Vielen Dank!
Christian
Anzeige
AW: Zellen sperren, wenn...
13.04.2017 11:05:42
ChrisL
Hi Christian
Man könnte die Spalten ganz am Schluss einfach noch sperren...
Private Sub Worksheet_Activate()
Dim iZeile As Long
With ActiveSheet
.Unprotect
For iZeile = 18 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(iZeile, 74) = 0 And .Cells(iZeile, 74)  "" Then
.Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = True
Else
.Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = False
End If
Next iZeile
    .Columns(20).Locked = True
.Protect
End With
End Sub
cu
Chris
Anzeige
AW: Zellen sperren, wenn...
13.04.2017 11:10:31
Christian
Hallo Chris,
das wäre ja schon sehr kleinteilig und bei jeder Spaltenveränderung anzupassen. Ich hatte gehofft, dass es da eine einschränkende Bedingung mit Formel oder so gibt?
Viele Grüße
Christian
AW: Zellen sperren, wenn...
13.04.2017 12:41:56
ChrisL
Hi Christian
Du bist ja ziemlich anspruchsvoll ;)
Private Sub Worksheet_Activate()
Dim iZeile As Long, i As Integer
With ActiveSheet
.Unprotect
For iZeile = 18 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(iZeile, 74) = 0 And .Cells(iZeile, 74)  "" Then
.Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = True
Else
For i = 11 To 70
If .Cells(iZeile, i).HasFormula Then
.Cells(iZeile, i).Locked = True
Else
.Cells(iZeile, i).Locked = False
End If
Next i
End If
Next iZeile
.Protect
End With
End Sub
cu
Chris
Anzeige
AW: Zellen sperren, wenn...
13.04.2017 13:12:05
Christian
Hallo Chris,
das anspruchsvolle gebt Ihr ja mit Eurer großartigen Expertise vor, oder?:)
Vielen Dank - es funktioniert - S E N S A T I O N E L L!
Viele Grüße
Christian
AW: Zellen sperren, wenn...
11.04.2017 19:58:05
Werner
Hallo Christian,
da stellt sich noch folgende Frage:
können in BV18 bis BV? auch mehrere 0 vorhanden sein?
Gruß Werner
Anzeige
AW: Zellen sperren, wenn...
12.04.2017 07:21:16
Christian
Hallo Werner,
ja, ganz vorne in jeder Zeile ist ein Name eingegeben. Wenn sich dieser Name zu dem User unterscheidet, ist der Inhalt der gleichen Zeile in BV eine 0 und damit vor Änderungen zu sperren. Ansonsten ist in BV eine 1, also bei leeren Zeilen oder bei Namens- und Usergleichheit.
Vielen Dank für Euer Engagement!
Viele Grüße
Christian
Anzeige
AW: Zellen sperren, wenn...
12.04.2017 07:21:20
Christian
Hallo Werner,
ja, ganz vorne in jeder Zeile ist ein Name eingegeben. Wenn sich dieser Name zu dem User unterscheidet, ist der Inhalt der gleichen Zeile in BV eine 0 und damit vor Änderungen zu sperren. Ansonsten ist in BV eine 1, also bei leeren Zeilen oder bei Namens- und Usergleichheit.
Vielen Dank für Euer Engagement!
Viele Grüße
Christian
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen sperren in Excel basierend auf Bedingungen


Schritt-für-Schritt-Anleitung

Um Zellen in Excel zu sperren, wenn eine andere Zelle beschrieben ist, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne dein Excel-Dokument und gehe zu dem Arbeitsblatt, auf dem du die Zellen sperren möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub Worksheet_Activate()
        Dim iZeile As Long
        With ActiveSheet
            .Unprotect
            For iZeile = 18 To .Cells(Rows.Count, 1).End(xlUp).Row
                If .Cells(iZeile, 74) = 0 And .Cells(iZeile, 74) <> "" Then
                    .Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = True
                Else
                    .Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = False
                End If
            Next iZeile
            .Protect
        End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu deinem Excel-Blatt zurück.

  6. Aktiviere das Arbeitsblatt, um den Code auszuführen. Die Zellen von K bis BR werden nun in Zeilen gesperrt, in denen in Spalte BV eine 0 steht.


Häufige Fehler und Lösungen

  • Fehler: Zellen werden nicht gesperrt.

    • Stelle sicher, dass der Blattschutz aktiviert ist, nachdem der Code ausgeführt wurde. Überprüfe, ob die Bedingungen im Code korrekt sind.
  • Fehler: Excel stürzt ab.

    • Überprüfe, ob der Code in einem gültigen Arbeitsblatt-Modul eingefügt wurde. Manchmal können auch große Datenmengen zu Abstürzen führen.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Datenvalidierung nutzen. Hier ist eine einfache Möglichkeit:

  1. Markiere die Zellen, die du sperren möchtest.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Benutzerdefinierte aus und gib eine Formel ein, die die Bedingung überprüft, z.B. =BV18<>0.
  4. Mit dieser Methode kannst du verhindern, dass Benutzer Zellen ändern, wenn eine bestimmte Bedingung nicht erfüllt ist.

Praktische Beispiele

Hier ist ein Beispiel für die Anwendung der oben genannten Methode:

  • Beispiel 1: Wenn in Zelle BV18 eine 0 steht, sollen die Zellen K18 bis BR18 gesperrt werden. Setze den VBA-Code wie beschrieben ein und aktiviere das Arbeitsblatt.

  • Beispiel 2: Wenn du nur bestimmte Zellen sperren möchtest, kannst du den Code anpassen. Zum Beispiel kannst du nur die Spalte K sperren:

    .Cells(iZeile, 11).Locked = True

Tipps für Profis

  • Verwende den Code, um mehrere Bedingungen zu kombinieren, z.B. wenn eine Zelle leer ist oder einen bestimmten Wert hat.
  • Denke daran, den Blattschutz mit einem Passwort zu aktivieren, wenn du sicherstellen möchtest, dass nur autorisierte Benutzer Änderungen vornehmen können.
  • Überlege dir, wie du die Eingaben der Benutzer überwachen kannst, um die Sperrbedingungen dynamisch anzupassen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig sperren?
Durch den Einsatz von VBA kannst du Bereiche von Zellen definieren, die gesperrt werden sollen, z.B. .Range(.Cells(iZeile, 11), .Cells(iZeile, 70)).Locked = True.

2. Können gesperrte Zellen in Excel mit Formeln befüllt werden?
Ja, die gesperrten Zellen können Formeln enthalten, aber die Benutzer können die Werte nicht ändern, solange die Zellen gesperrt sind.

3. Wie kann ich die Bedingung anpassen, um nur bestimmte Zellen zu sperren?
Ändere die If-Bedingung im VBA-Code, um spezifische Zellen oder Bereiche zu überprüfen, je nach deinen Anforderungen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige