Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen sperren in mehrern Tab.-Blätter

Zellen sperren in mehrern Tab.-Blätter
20.12.2021 13:58:46
Erwin
Hallo liebes Forum,
habe eine größere Datei mit u.a. 52 Kalenderwochen-Tabellenblätter (1KW, 2KW usw.). Mit Hilfe dieses Forums habe ich es geschafft, darin per VBA ganz gezielt bestimmte Zellenbereiche beschreibbar zu halten und den Rest zu sperren.
Das ist der Code dazu:

Sub KW_sperren()
'Alle Register KWen sperren
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name Like "*KW" Then
ws.Range("A4:G4,A7:K8,A10:G10,A13:K14,A16:G16" usw.).Select  'Diese Bereiche
Selection.Locked = False  'nicht sperren
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Next ws
End Sub
Der funktioniert auch super, aber nur für ein Tabellenblatt bzw. für das erste (1KW)!
Wenn er aber mit der For Each Schleife alle 52 Blätter durchlaufen soll, kommt die
Fehlermeldung Laufzeitfehler 1004 Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden
und markiert gelb die Zeile mit ws.Range("A4......)
In der If-Anweisung (If ws.Name Like "*KW" Then) ist der richtige Parameter aber übergeben worden (ws.Name=2KW)
Warum klappt bei einem Tabellenblatt alles einwandfrei und in der Schleife nicht?
Kann mir da jemand weiterhelfen?
Vielen Dank jetzt schon
Erwin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren in mehrern Tab.-Blätter
20.12.2021 14:37:42
Beverly
Hi Erwin,
so sollte es gehen:

Sub KW_sperren()
'Alle Register KWen sperren
Dim ws As Worksheet
Dim rngBereich As Range
For Each ws In Worksheets
If ws.Name Like "*KW" Then
With ws
Set rngBereich = Union(.Range("A4:G4"), .Range("A7:K8"), .Range("A10:G10"), .Range("A13:K14"), .Range("A16:G16"))
rngBereich.Locked = False
rngBereich.FormulaHidden = False
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End If
Next ws
End Sub
Bis später
Karin

Anzeige
AW: Zellen sperren in mehrern Tab.-Blätter
20.12.2021 15:04:33
Erwin
Hallo Karin,
funktioniert super!!
Vielen lieben Dank und eine schöne Weihnachtszeit.
Schöne Grüße
Erwin
AW: Zellen sperren in mehrern Tab.-Blätter
20.12.2021 15:30:35
Luschi
Hallo Erwin,
diese Vba-Zeile:
Set rngBereich = Union(.Range("A4:G4"), .Range("A7:K8"), .Range("A10:G10"), .Range("A13:K14"), .Range("A16:G16"))
kann man auch so schreiben:
Set rngBereich = .Range("A4:G4, A7:K8, A10:G10, A13:K14, A16:G16")
Gruß von luschi
aus klein-Paris
AW: Zellen sperren in mehrern Tab.-Blätter
20.12.2021 15:51:09
Erwin
Hallo luschi,
vielen Dank Dir auch für diesen Tipp und ebenfalls eine schöne Weihnachtszeit.
Danke
Schöne Grüße
Erwin
AW: Zellen sperren in mehrern Tab.-Blätter
20.12.2021 16:26:14
Beverly
Hi Erwin,
ich habe bewusst die Range-Bereiche getrennt geschrieben, denn du hattest in deinem ersten Post "usw." bei der Aufzählung der Teilbereiche angegeben - das Problem ist nämlich, wenn man zu viele Teil-Bereiche in einen einzigen Range getrennt durch Komma (,) schreibt, gibt es ab einer gewissen Anzahl an Teil-Bereichen einen Laufzeitfehler. Diesen kann man aber umgebehen, indem man eben jeden Teilbereich als Range angibt, so wie ich es in meinem Code getan habe.
Bis später
Karin

Anzeige
AW: Zellen sperren in mehrern Tab.-Blätter
20.12.2021 17:53:43
Erwin
Hallo Karin,
danke Dir für den Tipp, das könnte auch ein Fehler-Auslöser gewesen sein, weil ich noch eine ganze Menge an Bereichen eingegeben habe.
Schöne Zeit und danke nochmals für Deine Bemühungen, hast mir super geholfen.
Schöne Grüße
Erwin

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige