Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: dynamische For Schleife

dynamische For Schleife
28.09.2016 08:39:03
simpie
Guten Morgen !
In meinem Code muss die Schleife For = t bis zum dynamischen Wert AnzahlHilfstabelle laufen. Leider speichert der Code den neuen Wert für Anzahlhilfstabelle der in der For-Schleife berrechnet wird nicht wieder oben ein. Hat jemand einen Tipp wie ich an dieser Stelle weiter komme ? Vielen Dank !
For t = 1 To AnzahlReiheHilfstabelle
If Tab3.Cells(39, 2) = "Nein" Then
For s = 1 To LastColumn
Tab3.Cells(t, s + 10) = Tab1.Cells(j + t - 1, s).Value
Next s
Else
If Tab3.Cells(40, 2) = Tab1.Cells(j + t - 1, 4) Then
For s = 1 To LastColumn
Tab3.Cells(ZahlReihe, s + 10) = Tab1.Cells(j + t - 1, s).Value
Next s
ZahlReihe = ZahlReihe + 1
Else
AnzahlReiheHilfstabelle = AnzahlReiheHilfstabelle + 1
End If
End If
Next t
Grüße, simpie
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamische For Schleife
28.09.2016 09:55:39
Martin
Hallo Simpie,
für diese Art von Schleife verwendet man die "Do...Loop"-Anweisung. Damit kannst du die Bedingung zum Verlassen des Durchlaufes dynamisch während der Laufzeit verändern.
Viele Grüße
Martin
AW: dynamische For Schleife
28.09.2016 10:35:19
simpie
Hallo Martin, danke für deine Antwort. Ich habe eine Do While eingefügt und es klappt auch wunderbar. Allerdings erzeuge ich bei bestimmten Daten einen Überlauf. Gibt es eine bessere Lösung als der While Schleife eine Grenze zu setzen bei einem bestimmten hohen Wert ?
Gruß simpie
For j = 1 To LastRow
If IsNumeric(Tab1.Cells(j, Sortby1)) Then
t = 1
Do While t < AnzahlReiheHilfstabelle
If Tab3.Cells(39, 2) = "Nein" Then
For s = 1 To LastColumn
Tab3.Cells(t, s + 10) = Tab1.Cells(j + t - 1, s).Value
Next s
Else
If Tab3.Cells(40, 2) = Tab1.Cells(j + t - 1, 4) Then
For s = 1 To LastColumn
Tab3.Cells(ZahlReihe, s + 10) = Tab1.Cells(j + t - 1, s).Value
Next s
ZahlReihe = ZahlReihe + 1
Else
AnzahlReiheHilfstabelle = AnzahlReiheHilfstabelle + 1
End If
End If
t = t + 1
Loop
j = LastRow
End If
Next j
Anzeige
AW: dynamische For Schleife
28.09.2016 10:44:31
Martin
Hallo simpie,
ja klar, versuche es mal mit "Until"
Bei While läuft die Wiederholung solange eine Bedingung erfüllt ist. Bei Until läuft die Wiederholung bis eine Bedingung erfüllt ist.
Viele Grüße
Martin
;
Anzeige

Infobox / Tutorial

Dynamische For Schleife in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster und wähle Einfügen > Modul.

  3. Schreibe die For-Schleife: Nutze den folgenden Code als Basis:

    Dim t As Integer
    Dim AnzahlReiheHilfstabelle As Integer
    
    For t = 1 To AnzahlReiheHilfstabelle
       ' Dein Code hier
    Next t
  4. Dynamische Anpassung: Wenn du die Anzahl der Iterationen dynamisch anpassen möchtest, kannst du die Do...Loop-Anweisung verwenden:

    Dim t As Integer
    t = 1
    
    Do While t < AnzahlReiheHilfstabelle
       ' Dein Code hier
       t = t + 1
    Loop
  5. Fehlerbehebung: Wenn du auf Überlauf-Fehler stößt, stelle sicher, dass du die Schleifenbedingungen prüfst und gegebenenfalls eine Begrenzung einfügst.


Häufige Fehler und Lösungen

  • Überlauf-Fehler: Dieser Fehler tritt auf, wenn deine Schleife mehr Iterationen durchläuft, als die Variable verarbeiten kann. Um dies zu vermeiden, füge eine maximale Obergrenze hinzu:

    If t > MaxValue Then Exit Do
  • Falsche Schleifenbedingung: Stelle sicher, dass die Bedingung in der Schleife korrekt ist. Nutze Do Until statt Do While, um sicherzustellen, dass die Schleife stoppt, sobald eine bestimmte Bedingung erfüllt ist.


Alternative Methoden

  • Do...Loop: Eine Alternative zur For-Schleife ist die Do...Loop-Anweisung, die dir mehr Flexibilität bei der Bedingungsprüfung bietet.

    Do While Bedingung
       ' Dein Code hier
    Loop
  • For Each...Next: Wenn du mit Sammlungen oder Arrays arbeitest, könnte eine For Each-Schleife geeigneter sein.

    Dim Cell As Range
    For Each Cell In Tab1.Range("A1:A10")
       ' Dein Code hier
    Next Cell

Praktische Beispiele

  1. Einfaches Beispiel für eine For-Schleife:

    For t = 1 To 10
       Debug.Print "Iteration: " & t
    Next t
  2. Verwendung von Do While zur dynamischen Anpassung:

    Dim t As Integer
    t = 1
    
    Do While t <= 10
       Debug.Print "Iteration: " & t
       t = t + 1
    Loop

Tipps für Profis

  • Verwende Debugging: Nutze Debug.Print, um den Fortschritt deiner Schleife zu überwachen und Probleme frühzeitig zu erkennen.

  • Vermeide verschachtelte Schleifen: Wenn möglich, reduziere die Anzahl der verschachtelten Schleifen, um die Lesbarkeit und Performance deines Codes zu verbessern.

  • Optimierung der Variablen: Achte darauf, deine Variablen optimal zu deklarieren und ihre Reichweite zu begrenzen, um den Code effizienter zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Iterationen in einer Schleife dynamisch verändern? Du kannst die Schleifenbedingung in einer Do While-Schleife anpassen, um die Anzahl der Iterationen dynamisch zu steuern.

2. Was ist der Unterschied zwischen Do While und Do Until? Do While führt die Schleife aus, solange die Bedingung wahr ist, während Do Until die Schleife ausführt, bis die Bedingung wahr wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige