for next schleife
Schöne Woche an die Gemeinde,
hab ein kleines Problem am Montag.
Ich habe folgende Konstruktion
b= Zeilenzähler
for "a" to "b" step 1
Bedingung wenn wahr
Zeile einfügen
b= Zeilenzähler
next a
Die Schleife wird immer beendet wenn "a" den Startwert von Zeilenzahl erreicht hat,
die Zeilenanzahl hat sich aber längst erhöht.
Erhöhen von "a" etwa durch a= a+1 oder verringern a=a-1 zeigen keine Wirkung, es wird exakt die Anzahl der Zeilen beim Start abgearbeitet
und fertig.
Wer hat ne' Lösung?
wim
Antwort schreiben
Antwort 1 von Saarbauer vom 27.04.2021, 09:10 Options
Hallo,
da deine Angabe nur ein Fragment zu sein scheint, eine Frage:
Was hast du da genau vor?
Deine Angaben oben lassen den Eindruck zu, dass du noch nie mit VBA und Makros gearbeitet hast.
Gruß
Helmut
Antwort 2 von Beverly vom 27.04.2021, 09:27 Options
Hi,
laufe die Schleife von "hinten nach vorne" durch, also For a to b Step -1.
Bis später,
Karin
Antwort 3 von wmei vom 27.04.2021, 10:31 Options
Hi Karin,
diese Antwort von Dir kannte ich schon, da Du schon in gleicher Weise auf eine Anfrage geantwortet hast, aber ich dachte es gibt
noch ein "Hintertürchen" um nicht Alles umzuschreiben.
Hi Helmut,
die Frage ist einfach ob der Schleifenzähler einer einmal
gestarteten Schleife vor Ablauf noch mal verändert werden kann.
Karin's Antwort läßt vermuten NEIN.
Ich danke Euch,
wim
Antwort 4 von Saarbauer vom 27.04.2021, 12:43 Options
Hallo,
duch das geht, du kannst den Schleifenzähler, hier a, runter oder raufsetzten in der Form a=a +5 o.ä.
Was nicht geht is den Endwert, hier b, zu beeinflussen. Du kannst zwar b verändern, aner es hat keinen Einfluss auf die Schleife.mehr, es wird mit dem Startwert der Schleife weitergearbeitet.
Gruß
Helmut
Antwort 5 von Marie vom 28.04.2021, 02:12 Options
Zitat:
for "a" to "b" step 1
.....
next a
kann ja doch sowieso nicht gehen. Step 1 ist unnötig, schreibst Du nichts dahinter geht es automatisch im Einerschritt. Ansonsten müsste es heißen for a =1 to b oder so ähnlich
Wenn Du das Ende hochzählen willst, dann nimm eine While-Schleife. Die folgende Schleife macht einen Durchlauf weniger als zeilen vorhanden sind
Public Sub test()
Dim b As Integer
Dim Antwort As String
'b = Zeilenzähler, sei b zuerst 4
b = 4
a = 0 ' Schleifendurchlaufzähler wird jedesmal hochgezählt
Do While a <> b
Antwort = MsgBox("Weiterzählen ja/nein", vbYesNo, "b ist jetzt" & b)
If Antwort = vbYes Then b = b + 1 ' Zeilenzähler um 1 erhöhen
a = a + 1
Loop
End Sub
Gruß Marie
Antwort 6 von Marie vom 28.04.2021, 02:16 Options
Zitat:
Die folgende Schleife macht einen Durchlauf weniger als zeilen vorhanden sind
Stimmt nicht mehr, habs vor dem Absenden korrigiert durch Anfangswert a=0, sind also jetzt so viele Durchläufe wie Zeilen.
Sorry Marie
Antwort 7 von wmei vom 28.04.2021, 07:24 Options
Guten Morgen Gemeinde,
hab es mit
For a = b To 1 Step -1
hingebracht, die Lösung von Karin find ich aber auch sehr gut.
Danke nochmals
wim