Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bereich Sperren - Schleife - Performance schlecht

Bereich Sperren - Schleife - Performance schlecht
03.07.2007 10: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

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich Sperren - Schleife - Performance schlecht
03.07.2007 10: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 11: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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige