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

Bereich Sperren - Schleife - Performance schlecht

Forumthread: Bereich Sperren - Schleife - Performance schlecht

Bereich Sperren - Schleife - Performance schlecht
03.07.2007 12:05:23
Stefan
Hallo zusammen,
ich habe folgende Schleife über mehrere Excel-Blätter laufen. Leider dauert das zu lange. Hier erst mal der Code:
Dim zelle As Range, defRange As Range
Set defRange = Range("A6:IV6")
For Each zelle In defRange
If zelle.Value "" Then
If Weekday(zelle, vbMonday) 6 Or Weekday(zelle, vbMonday) 7 Then
zelle.Interior.ColorIndex = 35
zelle.Locked = True
zelle.End(xlDown).Interior.ColorIndex = 35
zelle.End(xlDown).Locked = True
'Jetzt kommt der Performance-Killer!!!!!!!!!!!!
For i = 3 To 500
zelle.Offset(i, 0).Locked = False
Next i
End If
If Weekday(zelle, vbMonday) = 6 Or Weekday(zelle, vbMonday) = 7 Then
zelle.Interior.ColorIndex = 15
zelle.Locked = True
zelle.End(xlDown).Interior.ColorIndex = 15
zelle.End(xlDown).Locked = True
zelle.Offset(3, 0).Locked = True
'Jetzt kommt der Performance-Killer!!!!!!!!!!!!
For i = 3 To 500
zelle.Offset(i, 0).Locked = True
zelle.Interior.ColorIndex = 15
Next i
End If
End If
Next zelle

Wegen des durchlaufens zeilenweise dauert das ganze zu lang. Kann mir jemand helfen, wie ich den Teil der Schleife so umbaue, dass ich nicht zeilenweise durchlaufe, sondern ne Range abgreife? So in der Art: Range(Cells())? Geht das irgendwie?
Vielen Dank für die Hilfe.
Gruß
Stefan

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich Sperren - Schleife - Performance schlecht
03.07.2007 12:48:48
Rudi
Hallo,

Sub tt()
Dim zelle As Range, defRange As Range
Set defRange = Range("A6:IV6")
For Each zelle In defRange
If zelle.Value  "" Then
Select Case Weekday(zelle, vbMonday)
Case 6, 7
zelle.Interior.ColorIndex = 15
zelle.Locked = True
zelle.End(xlDown).Interior.ColorIndex = 15
zelle.End(xlDown).Locked = True
zelle.Offset(3, 0).Locked = True
Range(zelle.Offset(3, 0), zelle.Offset(500, 0)).Locked = True
Case Else
zelle.Interior.ColorIndex = 35
zelle.Locked = True
zelle.End(xlDown).Interior.ColorIndex = 35
zelle.End(xlDown).Locked = True
Range(zelle.Offset(3, 0), zelle.Offset(500, 0)).Locked = False
End Select
End If
Next zelle
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Bereich Sperren - Schleife - Performance schlecht
03.07.2007 13:09:00
Stefan
Hallo Rudi,
funktioniert super! Genau das habe ich gesucht - auch das mit dem "case" finde ich eleganter.
Tausend Dank und viele Grüße
Stefan
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18