Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
848to852
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
848to852
848to852
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

While Schleife vorzeitig abbrechen bzw. nächste...

While Schleife vorzeitig abbrechen bzw. nächste...
27.02.2007 10:42:00
Micha
Hallo Gemeinde,
ich hab mal ne Frage zu Schleifen.
Gibt es eine Möglichkeit in einer While-Schleife den aktuellen Durchlauf zu unterbrechen und mit dem nächsten zu beginnen? Ich kenn das aus PHP etc. das man per break oder return sowas realisieren könnte.
so soll es grob, ungefähr aussehen:
while i < 500
if var1 = 1 then
i = i + 1
return
end if
...
i = i + 2
wend
also wenn var1 gleich 1 soll die schleife stoppen und wieder zu beginn der schleife gegangen werden i um 1 erhöht werden. wenn var nicht 1 ist soll i um 2 erhöht werden.
is jetzt nur nen beispiel um das vielleicht zu verdeutlichen.
kann mir da wer bei dem "return"-problemchen helfen?
micha

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 10:46:45
Hans
Hallo Micha,
verwende besser Do While:

Sub Schleife()
Dim i As Integer, var1 As Integer
Do While i < 500
If var1 = 1 Then
Exit Do
End If
i = i + 2
Loop
End Sub

gruss hans
AW: While Schleife vorzeitig abbrechen bzw. nächste...
27.02.2007 10:53:47
Micha
dankeschön
durchläuft er die schleife dann weiter auch wenn var1 = 1 gewesen ist
also "..." kann zum bespiel die var1 variable wieder verändern.
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 11:00:00
Hans
Hallo Micha,
die Schleife macht natürlich so keinen Sinn, es sollte nur die Methodik aufgezeigt werden. Hier steigt er aus oder auch nicht:

Sub Schleife()
Dim i As Integer, var1 As Integer
Randomize
Do While i < 500
var1 = Int((50 * Rnd) + 1)
If var1 = 1 Then
Exit Do
End If
i = i + 2
Loop
If var1 = 1 Then
MsgBox "Ich bin vorzeitig ausgestiegen!"
Else
MsgBox "Die Schleife wurde durchlaufen!"
End If
End Sub

Um die var1 wieder zu ändern, rufe die Schleifen-Prozedur von einer anderen Prozedur auf und übergib die Variable var1 als Argument.
Gruss hans
Anzeige
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 14:26:00
Micha
dankscheen....
mhh ich will aber dass der in der schleife bleibt und den nächsten durchlauf startet und nicht den quellcode nach der loop schleife ausführt.
geht das irgendwie?
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 14:29:11
Hans
Hallo Micha,
ich verstehe das Problem nicht, sorry. Die Variable var1 muss ja irgendwo ermittelt werden. Ich fürchte, eine treffende Antwort ist nicht möglich, solange nicht verständlich ist, was Du anstellen möchtest.
Gruss hans
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 14:39:00
Micha
ok...
also
ich hab eine schleife die zeilenweise (variable x für zeile) daten abfragt und teile aus diesem datensatz in ein neues datenblatt schreibt (variable y für jedezeile)
do while x < 200
x_wert = x_mappe.cells(x,2)
if x_wert = ungrade then
'raus aus der schleife und nächsten wert
end if
...
'wenn kein schleifen abbruch kam kopiere:
y_mappe.cells(y,2).value = x_mappe.cells(x,2)
loop
hintergrund ist das ich per userformn den zu kopierenden datensatzbereich eingrenzen möchte
also es wird eine auswahl getroffen und bei jedem datensatz soll geguckt werden entspricht der den getroffnen filter kriteiren wenn ja kopiere den datensatz ansonsten nimm den nächsten datensatz.
ich hoff ich habs verständlich formuliert ansonsten nochma nachfragen :-)
danke
micha
Anzeige
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 14:55:00
Hans
Hallo Micha,
wenn ich das richtig verstanden habe, sollte das etwa so funktionieren (ungetestet):

Sub Eintragen(x As Integer)
Dim x_wert As Integer, y As Integer
Do While x < 200
x_wert = x_mappe.Cells(x, 2)
If x_wert Mod 2 = 1 Then Exit Do
y = mappe.Cells(mappe.Rows.Count, 2).End(xlUp).Row
y_mappe.Cells(y, 2).Value = x_mappe.Cells(x, 2)
y = y + 1
x = x + 1
Loop
End Sub

Da x ja irgendwoher kommen muss, gehe ich davon aus dass die Variable von der UserForm aus als Argument übergeben wird.
Gruss hans
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 15:00:00
Micha
ich glaub wir nähern uns dem ziel :-)
aber problem das mit dem "exit do" aus der schleife rausgegangen wird und nicht einfach - ich nenn es mal - "einfach nach oben wieder zum while" gesprungen wird :-(
mit dem exit do wird die schleife beendet und der nachfolgende code weiter verarbeitet.
Anzeige
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 15:05:06
Hans
Hallo Micha,
mir schwant, dass es Dir gar nicht um den Ausstieg aus der Schleife sondern um die Berücksichtigung einer Bedingung geht:

Sub Eintragen(x As Integer)
Dim x_wert As Integer, y As Integer
Do While x < 200
x_wert = x_mappe.Cells(x, 2)
If x_wert Mod 2 = 0 Then
y = mappe.Cells(mappe.Rows.Count, 2).End(xlUp).Row
y_mappe.Cells(y, 2).Value = x_mappe.Cells(x, 2)
y = y + 1
End If
x = x + 1
Loop
End Sub

gruss hans
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 15:12:00
Micha
genau so in etwa. problem is nur das ich so viele bedingungen hab, das es mit "if then else" nicht zu managen ist.
Anzeige
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 15:57:32
Micha
das isses ja grad eben nich...
folgendes passiert:
ich drücke button ->user form plopp auf
ich grenze datenauswahlbereiche ein
zB. nur zeilen kopieren die in spalte a nen x haben und in spalte b eine zahl > 1000 und differez aus input_a und input_b
das fragt der jetzt für jeden datensatz/zeile ab und soll die zeilen ignorieren die den kriterien nicht ensprechen und alle anderen zeilen kopieren.
Anzeige
AW: While Schleife vorzeitig abbrechen bzw. nächst
27.02.2007 16:03:44
Hans
... dann wirst Du an If/Else-Abfragen und möglicherweise UND/ODER-Bedingungen nicht herum kommen.

If Cells(i, 1).Value = "x" And Cells(i, 2).Value >1000 And input_a + input_b < 100 _
Then

Watt mutt datt mutt
Gruss hans

58 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige