Zellen/Zeilen in mehreren Tabellenblättern sperren, wenn best. Kriterium in einem Tabellenblatt erfüllt ist
Hallo,
ich habe innerhalb einer xls-Datei 12 Tabellenblätter für die Monate sowie ein Übersichtsblatt (zur Kumulierung). ALLE haben die gleiche Struktur. Im Übersichtsblatt werden die Zellen einer Spalte (G) mit 0 oder 1 belegt. Jetzt soll ein VBA-Makro folgendes erledigen:
Durchlaufe die Spalte G vom obersten (das ist nicht die 1. Zeile!) bis zum untersten Eintrag - wenn die Zelle eine 1 enthält, gehe in alle Monats-Tabellenblätter und sperre die entsprechende Zeile, damit sie nicht mehr editiert werden kann (inkl. Tabellenblatt-Schutz aufheben und wieder festlegen).
Ich hoffe, ich hab' es deutlich genug beschrieben. Es wäre schön, wenn mir jemand eine Lösung hätte.
VIELEN DANK
Jojo
Antwort schreiben
Antwort 1 von Saarbauer vom 23.04.2022, 08:08 Options
Hallo,
ist aus meiner Sicht nur per Makro machbar. Für eine Lösung wäre eine Beispieldatei mit entsprechenden Erläuterungen Sinnvoll
Gruß
Helmut
Antwort 2 von jojo7 vom 23.04.2022, 10:07 Options
Hallo Helmut,
danke für deine Antwort. Ich schätze die Hilfe bei Supportnet wirklich sehr. Aber wenn du genau gelesen hättest, wäre die Antwort vielleicht anders ausgefallen. Denn ich suche genau eine VBA-Makro-Lösung (s.o. "Jetzt soll ein VBA-Makro folgendes erledigen:") ... und ich denke, die Erläuterungen sind recht klar.
Deshalb nochmal die Bitte: Kann mir jemand den entsprechenden Code liefern?
Danke, Gruß
Jojo
Antwort 3 von Saarbauer vom 23.04.2022, 12:10 Options
hallo,
ohne Beisspieldatei wirst du kaum ein Chance haben oder sollen wir deine Datei die sehr wage beschrieben ist nachbauen?
Hier wäre die Hinterlegung des Beispiels möglich
http://rapidshare.com/index.htmldann den Link hier einstellen.
Gruß
Helmut
Antwort 4 von jojo7 vom 23.04.2022, 14:30 Options
Hallo,
inzwischen hab' ich es selbst gelöst ... hier mein Code:
Sub Zellen_Sperren()
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Zeiten Gesamt").Activate
With ThisWorkbook.Sheets("Zeiten Gesamt")
Set raZelle = .Range("Start_SpalteG")
ErsteZeile = .Range(raZelle.Address).Row
ErsteSpalte = .Range(raZelle.Address).Column
LetzteZeile = .Cells(Rows.Count, ErsteSpalte).End(xlUp).Row
LetzteSpalte = ErsteSpalte
For Zeilennummer = ErsteZeile To LetzteZeile
intRowFormula = ThisWorkbook.Sheets("Zeiten Gesamt").Cells(ErsteZeile, ErsteSpalte).Offset(1, 0).Row
If ThisWorkbook.Sheets("Zeiten Gesamt").Cells(Zeilennummer, ErsteSpalte) = 1 Then
ZellschutzAktivieren Zeilennummer
End If
Next
End With
Application.ScreenUpdating = True
End Sub
Private Sub ZellschutzAktivieren(Zeilennummer As Long)
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Zeiten Gesamt" Then
ws.Unprotect Password:="test"
ws.Rows(Zeilennummer).EntireRow.Locked = True
ws.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Next
End Sub
Vielleicht kann's mal jemand brauchen ...
Gruß
Jojo