VBA Verschachtelte For Next
07.11.2022 14:02:16
Christian
Ich schon wieder.
Ich möchte meine Formeln gerne per VBA lösen, und hoffe dass dann schneller geht, und nicht ewig geladen wird.
Datei kann nicht hochgeladen werden, da zu groß. Ich versuche so gut wie möglich zu beschreiben.
Ich habe auf Blatt1 Per Filter Formel in Spalte C Die Namen der Mitarbeiter ( mit Leerzeilen als Puffer von Zeile 12 - 200 )
von Spalte J bis BP befinden sich die Kalenderwochen ( jeweils pro Quartal mit 2 Ergebnisspalten getrennt ).
Auf Blatt2 befindet sich ein EU Plan, Welche die Namen von Blatt1 über eine Liste enthält.
Dort habe ich 50 Spalten ab Spalte E pro KW ( KW in Zeilen )
Nun soll das Makro die Namen von Blatt1 durchgehen ob diese in den einzelnen KW Urlaub haben, und diese dann in Blatt1 mit einem x markieren.
Per Farbcode lasse ich mir noch ausgeben ob es Verschiedene Arten von Frei sein sollen ( Entlastungszeit, Urlaub oder Überstunden )
Das klappt soweit, aber nur vor die Zeile 12, sprich für einen Namen.
Ich muss hier noch irgendwo was vergessen haben, wo ich nicht drauf komme, dass er das für alle Namen macht.
Sub Fliegenschiess()
Dim StartZeile As Long
Dim EndZeile As Long
Dim Spalte1 As Long
Dim Spalte2 As Long
Dim Spalte3 As Long
Dim Spalte4 As Long
Dim Farbe1 As Long
Dim Farbe2 As Long
Dim Farbe3 As Long
Dim Farbe4 As Long
Dim Eintrag As Variant
StartZeile = 12
EndZeile = 200
Spalte1 = 11
Spalte2 = 25
Spalte3 = 40
Spalte4 = 55
Farbe1 = Tabelle2.Range("D71").Font.ColorIndex
Farbe2 = Tabelle2.Range("D72").Font.ColorIndex
Farbe3 = Tabelle2.Range("D73").Font.ColorIndex
Farbe4 = Tabelle2.Range("D74").Font.ColorIndex
For Eintrag = StartZeile To EndZeile
For PlanZeile = 7 To 65
For PlanSpalte = 5 To 55
If Tabelle2.Cells(PlanZeile, PlanSpalte).Value = Tabelle1.Range("C" & StartZeile).Value Then
If Tabelle2.Cells(PlanZeile, PlanSpalte).Font.ColorIndex = Farbe1 Then
Tabelle1.Cells(StartZeile, PlanZeile + 4).Value = "x"
End If
If Tabelle2.Cells(PlanZeile, PlanSpalte).Font.ColorIndex = Farbe2 Then
Tabelle1.Cells(StartZeile, PlanZeile + 4).Value = "ü"
End If
If Tabelle2.Cells(PlanZeile, PlanSpalte).Font.ColorIndex = Farbe3 Then
Tabelle1.Cells(StartZeile, PlanZeile + 4).Value = "w"
End If
If Tabelle2.Cells(PlanZeile, PlanSpalte).Font.ColorIndex = Farbe4 Then
Tabelle1.Cells(StartZeile, PlanZeile + 4).Value = "e"
End If
End If
Next PlanSpalte
Next PlanZeile
Next Eintrag
Calculate
End Sub
Ich könnte mir vorstellen, dass ich bei For Eintrag = ... noch etwas eintragen muss.
Danke für eure Hilfe