2.1k Aufrufe
Gefragt in Tabellenkalkulation von wmei Mitglied (117 Punkte)
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

7 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

laufe die Schleife von "hinten nach vorne" durch, also For a to b Step -1.

Bis später,
Karin
0 Punkte
Beantwortet von wmei Mitglied (117 Punkte)
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
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von marie Experte (2k Punkte)
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
0 Punkte
Beantwortet von marie Experte (2k Punkte)
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
0 Punkte
Beantwortet von wmei Mitglied (117 Punkte)
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
...