Microsoft Excel

Herbers Excel/VBA-Archiv

For...Next Schleife anstelle Do until...Loop | Herbers Excel-Forum


Betrifft: For...Next Schleife anstelle Do until...Loop von: Stefan
Geschrieben am: 14.01.2010 15:23:09

Hallo zusammen,

ich habe eine Do...Loop Schleife und würde diese gerne durch eine For...Next Schleife ersetzten.
Geht das in diesem Fall überhaupt?

Sub loop()
 
   Dim iRow As Integer
   iRow = 5
   Do Until Cells(iRow - 1, 1).Value = "x"
           
      If IsEmpty(Cells(iRow, 1)) Then
         ...
         ...
         ...
      End If
      
      iRow = iRow + 1
    
   Loop

End Sub

  

Betrifft: AW: For...Next Schleife anstelle Do until...Loop von: Daniel
Geschrieben am: 14.01.2010 15:46:22

Hi

eine For-Next-Schleife kannst du natürlich nur verwenden, wenn das Ende bekannt ist.

Sollte es Fälle geben, in denen die Schleife vor Erreichen des Endes beendet werden soll, geht das mit EXIT FOR, es wird mit dem nächsten Befehl nach dem zugehörigen NEXT weiter gemacht:

For rRow = 5 to Cells(Rows.Count, 1).End(xlup).Row
   if Cells(i,Row-1,1).Value = "X" then exit For
     If IsEmpty(Cells(iRow, 1)) Then
         ...
         ...
         ...
      End If
next
Gruß, Daniel


  

Betrifft: AW: For...Next Schleife anstelle Do until...Loop von: Hajo_Zi
Geschrieben am: 14.01.2010 15:48:54

Hallo Daniel,

es fehlt 1x Ed If

Gruß Hajo


  

Betrifft: AW: Sicher??? von: Daniel
Geschrieben am: 14.01.2010 15:52:11

ich meine nicht.

Gruß, Daniel


  

Betrifft: AW: Sicher??? von: Hajo_Zi
Geschrieben am: 14.01.2010 15:54:37

Hallo Daniel,

ich habe es falsch gesehen.

Gruß Hajo


  

Betrifft: AW: For...Next Schleife anstelle Do until...Loop von: Stefan
Geschrieben am: 14.01.2010 16:04:55

Hallo,

ist leider nicht so einfach, da die Anzahl der Zeilen variabel ist und durch die Schleife erweitert wird. In Spalte "A" wird eine Formel so lange nach unten kopiert bis die Formel den Wert X zurück gibt. So lange sollte dann natürlich auch die Schleife laufen...

For rRow = 5 To Cells(Rows.Count, 1).End(xlUp).Row

If Cells(iRow - 1, 1).Value = "X" Then Exit For
If IsEmpty(Cells(iRow, 1)) Then
Range(Optionen2.Cells(iRow - 1, 1), Optionen2.Cells(iRow - 1, 39)).Copy
Cells(iRow, 1).PasteSpecial xlFormulas
ActiveSheet.calculate
End If

iRow = iRow + 1
End if

Next


  

Betrifft: AW: Dann ist Do...Loop die bessere Variante von: Daniel
Geschrieben am: 14.01.2010 22:28:18

For...Next setzt man ein, wenn die Anzahl der Schleifendurchläufe von vorne herein bekannt ist, was bei dir aber nicht der Fall ist.
Gruß, Daniel


  

Betrifft: AW: Dann ist Do...Loop die bessere Variante von: Stefan
Geschrieben am: 15.01.2010 08:48:32

Hallo zusammen,

eigentlich wollte ich For...Next verwenden um einen Fortschrittsbalken einzubinden.
Bei Do..Loop geht das ja meines wissens nicht...


  

Betrifft: kein technisches, sondern sachliches Problem von: Erich G.
Geschrieben am: 15.01.2010 09:02:22

Hi Stefan,
das ist dann wohl gar kein technisches, sondern ein sachliches Problem.

Was sollte ein Fortschrittsbalken denn nach dem ersten oder zweiten Schleifendurchlauf anzeigen,
wenn niemand wissen kann, ob danach noch drei oder 20000 Durchläufe nötig sind?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: kein technisches, sondern sachliches Problem von: Stefan
Geschrieben am: 15.01.2010 09:13:04

Hallo Erich,

gebe Dir recht - müsste evtl. vorher abfragen wie viele Durchläufe benötigt werden und dann die Schleifen durchlaufen lassen.Ich glaube ich lasse es einfach wie es ist und die Kosmetik mit Fortschrittsbalken ist sowieso nicht so wichtig.

Danke!


  

Betrifft: was hast du gegen Do...Loop? owt von: Rudi Maintaire
Geschrieben am: 14.01.2010 20:04:55




Beiträge aus den Excel-Beispielen zum Thema "For...Next Schleife anstelle Do until...Loop"