Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1660to1664
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
Inhaltsverzeichnis

Variabler Schleifen-Einstieg

Variabler Schleifen-Einstieg
10.12.2018 16:34:59
Tomi
Hallo und Bitte um Hilfe,
folgende verschachtelte Schleifen in VBA:
for x1=1 to 22
for x2=x1+1 to 23
for x3=x2+1 to 24
for x4=x3+1 to 25
next x4
next x3
next x2
next x1
möchte ich mit jeweils einem variablen Wert für x1,x2,x3,x4 beginnen.
Wie kann man das umsetzen, das bspw. die Schleifen mit den Startwerten für
für x1=3, x2=5, x3=17, x4=18 (oder anderen variablen Startwerten)
beginnt und dann komplett durchlaufen werden?
Herzliche Grüße und Dank vorab,
Tomi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabler Schleifen-Einstieg
10.12.2018 19:29:59
Robert
Hallo Tomi,
in nachstehendem Code beginnen die Schleifen bei den von Dir genannten Werten. Alternativ kann natürlich der jeweilige Schleifenbeginn mit einer Formel variabel ermittelt oder z. B. aus einem Zellwert genommen werden.
Dim Start_x1 As Integer, Start_x2 As Integer, Start_x3 As Integer, Start_x4 As Integer
Dim x1 As Integer, x2 As Integer, x2 As Integer, x2 As Integer
'Zuweisung der Startwerte, können auch variabel ermittelt werden
'z. B. durch eine Formel oder einen Zellbezug
Start_x1 = 3
Start_x2 = 5
Start_x3 = 17
Start_x4 = 18
'Deine Schleifen
For x1 = Start_x1 To 22
For x2 = Start_x2 To 23
For x3 = Start_x3 To 24
For x4 = Start_x4 To 25
Next x4
Next x3
Next x2
Next x1
Gruß
Robert
Anzeige
AW: Variabler Schleifen-Einstieg
10.12.2018 22:29:44
Tomi
Hallo Robert,
mit dem Start bin ich einverstanden, aber wirden die Schleifen wohl
von 3,23,24,25
auf 4,5,17,18
springen und nicht wie eigentlich gewollt auf 4,5,6,7 (nach 3,23,24,25)
Richtig? Wie kann man das noch in den griff bekommen?
Herzliche Grüße,
Tom
AW: Variabler Schleifen-Einstieg
11.12.2018 08:49:11
Robert
Hallo Tomi,
ich verstehe nicht was Du meinst. Die äußere Schleife (x1) läuft von 3 bis 22 (also 20 mal). Bei jedem Schleifendurchlauf läuft dann die Schleife x2 von 5 bis 23 (insgesamt also 19 x 20 = 380 mal). Bei jedem Durchlauf der Schleife x2 läuft die Schleife x3 von 17 bis 24 (insgesamt also 8 x 380 = 3.040 mal) und bei jedem Durchlauf der Schleife x3 läuft die Schleife x4 von 18 bis 25 (insgesamt also 8 x 3.040 = 24.320 mal). So wie bei Deinem ersten Code, nur dass der Einstieg (im Beispiel bei x1 = 3, x2 = 5, x3 = 17 und x4 = 18) halt variabel gehalten ist.
Gruß
Robert
Anzeige
AW: Variabler Schleifen-Einstieg
11.12.2018 16:35:54
Tomi
Hallo Robert,
der Schleifendurchlauf (mit den Beispielwerten) und Deinem Vorschlag des variablen Einstiegs gestallte sich wie folgt:
3,5,17,18
3,5,17,19
.....
3,23,24,25 Achtung jetzt kommt das Problem!, denn es geht jetzt weiter mit
4,5,17,18 und nicht wie ursprünglich gewollt mit 4,5,6,7 (siehe meinem ursprünglichen Code)
Herzliche Grüße,
Tomi
AW: Variabler Schleifen-Einstieg
11.12.2018 19:06:50
Robert
Hallo Tomi,
in Deinem 1. Beitrag sind i dem Text nach Deinem Code als Startwerte x1=3, x2=5, x3=17, x4=18 vorgegeben. Und genau die habe ich genommen.
Der Startwert von x1 soll 3 sein. Also werden alle nachfolgenden Schleifen mit dieser 3 kombiniert. Genauso wie Du es auch beschrieben hast von
3,5,17,18
bis
3,23,24,25.
Dann kommt der nächste Wert für die äußere Schleife, nach 3 also 4. Diese 4 wird dann mit allen nachfolgenden Schleifen, an denen sich ja nichts geändert hat, kombiniert, also von
4,5,17,18
bis
4,23,24,25.
Anschließend das gleiche mit der 5:
5,5,17,18
bis
5,23,24,25.
Und immer so weiter, bis der Endwert der äußeren Schleife (22) erreicht ist. Wieso er beim ersten Durchlauf der äußeren Schleife mit 3,5,17,18 starten soll, beim zweiten Durchlauf aber mit 4,5,6,7 erschließt sich mir nicht aus Deinen Beiträgen.
Gruß
Robert
Anzeige
AW: Variabler Schleifen-Einstieg
12.12.2018 16:20:22
Tomi
Hallo Robert,
der Schleifendurchlauf (mit den Beispielwerten) und Deinem Vorschlag des variablen Einstiegs gestallte sich wie folgt:
3,5,17,18
3,5,17,19
.....
3,23,24,25 Achtung jetzt kommt das Problem!, denn es geht jetzt weiter mit
4,5,17,18 und nicht wie ursprünglich gewollt mit 4,5,6,7 (siehe meinem ursprünglichen Code)
Herzliche Grüße,
Tomi
AW: Variabler Schleifen-Einstieg
12.12.2018 19:39:50
Robert
Hallo,
neuer Versuch, zu verstehen was Du willst.
Beim ersten Durchlauf der äußeren Schleife (wenn x1 = 3) sollen als Startwerte für x2 = 5, x3 =17 und x4 = 18 genommen werden.
Beim nächsten Durchlauf der äußeren Schleife (wenn x1 = 4) sollen als Startwerte für x2 = 5 (x1 + 1), x3 = 6 (x2 +1) und x4 = 7 (x3 + 1) genommen werden.
Beim nächsten Durchlauf der äußeren Schleife (wenn x1 = 5) sollen als Startwerte für x2 = 6 (x1 + 1), x3 = 7 (x2 +1) und x4 = 8 (x3 + 1) genommen werden. Und so weiter.
Dann versuche es mal so:
Start_x1 = 3
Start_x2 = 5
Start_x3 = 17
Start_x4 = 18
'Deine Schleifen
For x1 = Start_x1 To 22
If x1 > Start_x1 Then
Start_x2 = x1 + 1
Start_x3 = Start_x2 + 1
Start_x4 = Start_x3 + 1
End If
For x2 = Start_x2 To 23
For x3 = Start_x3 To 24
For x4 = Start_x4 To 25
Next x4
Next x3
Next x2
Next x1
Gruß
Robert
Anzeige
AW: Variabler Schleifen-Einstieg
14.12.2018 17:05:10
Tomi
Hallo Robert,
diese (deine!) Lösung sieht gut aus! - sollte so richtig sein.
Danke dafür!!!!!!!!!
Alternativ hab ich mal aus Spaß probiert die Schleifen einfach so durchlaufen zulassen bis:
x1=3
x2=5
x3=17
x4=18
erreicht hat (mit einfach: if x1=3 and x2=5 .... then....)
Hat nur 1-2 Sekunden gedauert und dann einfach weiter verzweigt.
Deine Lösung ist aber um so interessanter, je größer die Einstiegswerte und die Anzahl der verschachtelten Schleifen sind - habe nämlich auch bis zu 10 verschachtelte Schleifen mit noch größeren Endwerten.
Herzliche Grüße,
Tomi
Anzeige
Gerne und Danke für die Rückmeldung (owT)
14.12.2018 20:22:00
Robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige