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

Forumthread: Zellen Sperren per VBA- Schleife

Zellen Sperren per VBA- Schleife
25.01.2016 12:29:33
FFB
Hallo Liebes Forum,
ich habe eine Excelliste von Spalte G-BP können dort Daten eingegeben werden.
Ich möchte nun per Makro bestimmte Zellen speeren, bei denen in Zeile 1 Die Information Y steht.
Dies läuft auch mit unten aufgeführten Makro super!

Sub Worksheet_Calculate()
If Range("H1") = "Y" Then
Range("h4:h17").Locked = True
ActiveSheet.Protect Password:="xxx"
End If
End Sub

Jetzt zu meiner eigentlichen Frage wie bekomme ich eine Schleife hin, dass jede einzelne Spalte entsprechend überprüft wird?
Schonmal vorab vielen Dank und viele Grüße
Frederik

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen Sperren per VBA- Schleife
25.01.2016 12:41:19
Rudi
Hallo,
eine Möglichkeit:
Sub Worksheet_Calculate()
Dim c as Range
for each c in range("G1:BP1")
If c = "Y" Then
c.offset(3).resize(14).Locked = True
end if
next c
ActiveSheet.Protect Password:="xxx"
End Sub
Gruß
Rudi

AW: Zellen Sperren per VBA- Schleife
25.01.2016 12:51:39
FFB
Hey Rudi,
danke für die schnelle
Antwort.
Jetzt bekomme ich leider einen Laufzeitfehler
Locked-Eigenschaft des Range Objektes kann nicht festgelegt werden...
Weißt Du was das schon wieder bedeutet?
Viele Grüße
Frederik

Anzeige
AW: Zellen Sperren per VBA- Schleife
25.01.2016 12:58:51
Rudi
Hallo,
dann wird der Blattschutz aktiv sein.
Gruß
Rudi

AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:10:09
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:10:20
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:10:29
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:10:36
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:10:58
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?
Viele Grüße
Frederik

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:11:10
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?
Viele Grüße
Frederik

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:11:11
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?
Viele Grüße
Frederik

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:11:11
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?
Viele Grüße
Frederik

Anzeige
AW: Zellen Sperren per VBA- Schleife
27.01.2016 11:11:11
FFB
Hallo Rudi,
jetzt funktioniert das ganze, vielen Dank!
Anbei der Code:
Sub Worksheet_Sperren()
Dim c As Range
For Each c In Range("g1:BP1")
If c = "Y" Then
ActiveSheet.Unprotect Password:=""
c.Offset(4).Resize(14).Locked = True
End If
Next c
ActiveSheet.Protect Password:=""
End Sub
Kann ich diesen Code auch noch um eine Zeilenabfrage ergänzen, wenn sich das ganze z.B. in Zeile 30 und 60 wiederholt?
Viele Grüße
Frederik
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen Sperren mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um Zellen in Excel mithilfe von VBA zu sperren, kannst du folgenden Code verwenden, der eine Schleife implementiert, um jede Spalte in einer bestimmten Zeile zu überprüfen. Hier ist der Schritt-für-Schritt-Prozess:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du im Menü auf Einfügen und dann auf Modul klickst.

  3. Kopiere und füge diesen VBA-Code in das Modul ein:

    Sub Worksheet_Sperren()
       Dim c As Range
       For Each c In Range("G1:BP1")
           If c.Value = "Y" Then
               ActiveSheet.Unprotect Password:="" ' Hier das Passwort einfügen, falls notwendig
               c.Offset(4).Resize(14).Locked = True
           End If
       Next c
       ActiveSheet.Protect Password:="" ' Hier das Passwort einfügen
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Laufzeitfehler: Locked-Eigenschaft des Range Objektes kann nicht festgelegt werden
    Dieser Fehler tritt auf, wenn das Arbeitsblatt bereits geschützt ist. Stelle sicher, dass das Arbeitsblatt vor dem Sperren der Zellen ungeschützt ist. Der Code in der Anleitung berücksichtigt dies bereits.

  • Zellen werden nicht gesperrt
    Überprüfe, ob die Zelle in der ersten Zeile tatsächlich „Y“ enthält. Wenn das nicht der Fall ist, wird die entsprechende Zeile nicht gesperrt.


Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du die Zellen auch manuell sperren:

  1. Wähle die Zellen aus, die du sperren möchtest.
  2. Klicke mit der rechten Maustaste und wähle „Zellen formatieren“.
  3. Gehe zum Tab „Schutz“ und aktiviere das Kontrollkästchen „Gesperrt“.
  4. Schütze das Arbeitsblatt über Überprüfen > Blatt schützen.

Diese Methode ist jedoch weniger flexibel als die Verwendung von VBA.


Praktische Beispiele

Hier sind einige Beispiele, wie du den VBA-Code anpassen kannst, um Zellen in verschiedenen Zeilen zu sperren:

  • Sperren von Zellen in Zeile 30 und 60:

    Sub Worksheet_Sperren()
       Dim c As Range
       For Each c In Range("G1:BP1")
           If c.Value = "Y" Then
               ActiveSheet.Unprotect Password:=""
               c.Offset(29).Resize(14).Locked = True ' Zeile 30
               c.Offset(59).Resize(14).Locked = True ' Zeile 60
           End If
       Next c
       ActiveSheet.Protect Password:=""
    End Sub

Tipps für Profis

  • Passwortschutz: Verwende ein starkes Passwort, um die Zellen zu schützen und unbefugten Zugriff zu verhindern.
  • Fehlermeldungen: Implementiere Fehlerbehandlungsroutinen im VBA-Code, um sicherzustellen, dass der Code auch bei unerwarteten Situationen funktioniert.
  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um Probleme im Code schnell zu identifizieren und zu beheben.

FAQ: Häufige Fragen

1. Wie kann ich die Zellen wieder entsperren?
Verwende den folgenden VBA-Code, um die Zellen zu entsperren:

Sub Worksheet_Entsperren()
    ActiveSheet.Unprotect Password:=""
    Cells.Locked = False
    ActiveSheet.Protect Password:=""
End Sub

2. Kann ich das Makro auch auf andere Zeilen anwenden?
Ja, du kannst die Offset-Parameter im Code anpassen, um andere Zeilen zu sperren. Achte darauf, die richtigen Zeilenindizes anzugeben.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code funktioniert in den meisten modernen Excel-Versionen ab Excel 2007 und höher.

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