VBA läuft 35 sec.
07.02.2020 14:07:09
Thomas
und ich hoffe, dass ich mich diesmal verständlich ausdrücke.
Ich hab mir jetzt hier ein Script gebastelt, welches sogar nach meinen Vorstellungen funktioniert.
Nur brauch es 35 sec. bis es durch ist.
Folgendes habe ich nun.
Private Sub Worksheet_Activate()
Dim cell
Worksheets("Overview").Unprotect Password:="_______"
For Each cell In Worksheets("Overview").Range("B7:ABA7").Cells
cell.Interior.Pattern = xlNone
cell.Font.Color = RGB(255, 255, 255) 'white
If cell >= Worksheets("Milestone").Range("K9") And cell = Worksheets("Milestone").Range("K10") And cell = Worksheets("Milestone").Range("K11") And cell = Worksheets("Milestone").Range("K12") And cell = Worksheets("Milestone").Range("K13") And cell = Worksheets("Milestone").Range("K14") And cell = Worksheets("Milestone").Range("K15") And cell = Worksheets("Milestone").Range("K16") And cell = Worksheets("Milestone").Range("K17") And cell = Worksheets("Milestone").Range("K18") And cell = Worksheets("Milestone").Range("K19") And cell = Worksheets("Milestone").Range("K20") And cell = Worksheets("Milestone").Range("K21") And cell = Worksheets("Milestone").Range("K22") And cell = Worksheets("Milestone").Range("K23") And cell = Worksheets("Milestone").Range("K24") And cell = Worksheets("Milestone").Range("K25") And cell
Das Script besteht aus 15 oben gezeigten Blöcken in der sich nur
For Each cell In Worksheets("Overview").Range("B7:ABA7").Cells
von B7:ABA7 bis B35:ABA35 (nur die ungeraden Zeilen)
und
If cell >= Worksheets("Milestone").Range("K9") And cell cell.Interior.Color = RGB(0, 191, 255) 'deep sky blue
cell.Font.Color = cell.Interior.Color
End If
die Spalten in Range("K ") und Range("L") sich bis DS btw. DT ( um jeweils 8 Spalten, Also von K zu S und von L zu T..... bis DS bzw. DT ändern.
Am Ende kommt ein Gantt-Diagramm raus, bei dem sich die Balken hintereinander anstatt, wie gewohnt, versetzt untereinander dargestellt werden.
Kann man das irgenwie verschlanken, damit´s flüssiger läuft ?
Ursprünglich wollte ich dies mit bedingten Formatierungen lösen, die Formel hierzu sieht folgendermaßen aus
=UND(B$5>=Milestone!$K$9;B$5 B5 weil sich in B5 der "Zeitstrahl" befindet. Der Schreibaufwand ist hier aber absurd hoch.
16 Regeln * 15 Zeilen = 240 Regeln ohne copy and paste.... (der Formeleditor ist hier wenig komfortabel)
dann wollte ich es über
If Zelle B5 >= K9 und Zelle B5 Also hab ich den Zeitstrahl in jetzt 16 Zeilen stehen, gefällt mir nicht... aber irgendwas is ja immer....