Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1904to1908
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

VBA Verschachtelte For Next

VBA Verschachtelte For Next
07.11.2022 14:02:16
Christian
Hallo
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Verschachtelte For Next
07.11.2022 14:11:24
Nepumuk
Hallo Christian,
hier liegt der Hund begraben:

If Tabelle2.Cells(PlanZeile, PlanSpalte).Value = Tabelle1.Range("C" & StartZeile).Value Then
Das muss so lauten:

If Tabelle2.Cells(PlanZeile, PlanSpalte).Value = Tabelle1.Cells(Eintrag, 3).Value Then
Gruß
Nepumuk
AW: VBA Verschachtelte For Next
07.11.2022 15:04:30
Christian
Hallo Nepumuk
Danke für die schnelle Antwort.
Jetzt geht er scheinbar alle Namen durch, aber schreibt alles auf Blatt1 in Zeile 12 bei dem ersten Namen und hängt sich scheinbar auf.
AW: VBA Verschachtelte For Next
07.11.2022 15:43:47
Nepumuk
Hallo Christian,
lade bitte eine Beispielmappe hoch damit ich mir das anschauen kann.
Gruß
Nepumuk
Anzeige
AW: VBA Verschachtelte For Next
07.11.2022 16:03:08
GerdL
Hallo,
die Spaltennummern in Tabelle1 musst du an deine nicht gezeigten Verhältnisse anpassen.

Dim Eintrag As Long
Farbe1= ..
Farbe2= ..
Farbe3= ..
Farbe4= ..
For Eintrag = StartZeile To EndZeile
For PlanZeile = 7 To 65
For PlanSpalte = 5 To 55
If Tabelle1.Cells(Eintrag, 3).Value  "" Then
If Tabelle2.Cells(PlanZeile, PlanSpalte).Value = Tabelle1.Cells(Eintrag, 3).Value Then
Select Case Tabelle2.Cells(PlanZeile, PlanSpalte).Font.ColorIndex
Case Farbe1: Tabelle1.Cells(Eintrag, 10).Value = "x"
Case Farbe2: Tabelle1.Cells(Eintrag, 11).Value = "ü"
Case Farbe3: Tabelle1.Cells(Eintrag, 12).Value = "w"
Case Farbe4: Tabelle1.Cells(Eintrag, 13).Value = "e"
End Select
End If
End If
Next PlanSpalte
Next PlanZeile
Next Eintrag
End Sub
Gruß Gerd
Anzeige
AW: VBA Verschachtelte For Next
08.11.2022 05:25:28
Christian
Danke für die Antwort Gerd
jetzt geht er zwar die Zeilen runter, aber nicht mehr die Spalten rüber.
Mache es über die Alte Methode ( Farbe zählen ).
Das klappt ja, dachte nur dass dies über VBA evtl. schneller wäre, da es das ganze dann, wenn man alles in eine Datei packt ( ca 2000 Zeilen mit jeweils 52 Formeln Farbe Zählen ) doch sehr träge macht.
Mache jetzt jeden Standort extra, dann nur 200 Zeilen, und versuche dann das ganze per Senden Button als Werte in meine Gesamttabelle einzutragen.
Dann sollte das ganze auch schnell gehen, denke ich.
Danke euch trotzdem

253 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige