2.4k Aufrufe
Gefragt in Tabellenkalkulation von
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

4 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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

rapidshare.com/index.html

dann den Link hier einstellen.

Gruß

Helmut
0 Punkte
Beantwortet von
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
...