1.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ihr Profis..:-)

ich hab zwei For schleifen:
For i = 5 To 10

For spalte = 4 To 300

Next spalte
Next i

ist es irgendwie möglich, dass ich wenn i = 5 einen anderen anfangs und endwert für "spalte" definieren kann und bei i 6, 7, 8 usw. jeweils andere..??

also wenn i = 5 dann spalte 4 to 40, wenn i = 6 spalte 50 to 90 usw.

danke für eure Hilfe

Grüße

5 Antworten

0 Punkte
Beantwortet von
Einfach ein Array mit den Werten für den Anfangswert und den Endwert festlegen und dann mittels Anfangswert(i) bzw. Endwert(i) einsetzen bzw. abrufen.
Wichtig zu wissen: die Arrays zählen immer bei 0 los, also entsprechend das i korrigieren.

Gruß
[list] Primut[/list]
0 Punkte
Beantwortet von
Danke Primut,

klingt einfach, aber da ich noch nie mit arrays gearbeitet habe, ist es für mich nicht so leicht..

wie müsste es denn in dem fall ausschauen???

wenn es heißen soll

wenn i = 5 dann spalte 4 bis 40
wenn i = 6 dann spalte 50 bis 100
wenn i = 7 dann spalte 105 bis 196
??

danke für die Hilfe.. :-)
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Frohny,

vielleicht hilft Dir auch dieser Ansatz

Option Explicit

Sub schleife()
Dim intI As Integer, intSpalte As Integer
Dim intStart As Integer, intZiel As Integer
For intI = 1 To 5
Select Case intI
Case Is = 5
intStart = 4
intZiel = 40
Case Is = 6
intStart = 50
intZiel = 100
Case Is = 7
intStart = 105
intZiel = 196
Case Is = 8
intStart = 200
intZiel = 300
Case Is = 9
intStart = 301
intZiel = 400
Case Is = 10
intStart = 401
intZiel = 500
End Select
For intSpalte = intStart To intZiel

'......Befehle

Next
Next
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von
Ja,
Rainer hat zwar Recht,
allerdings ist es programmiertechnisch wesentlich eleganter, mit Arrays zu arbeiten.
Beispiel ( mit 3 Elementen)

Dim Anfangswert As Variant
Dim Endwert As Variant
Dim i, a, spalte As Integer

Anfangswert = Array(4, 50, 105)
Endwert = Array(40, 100, 196)

For i = 5 To 7
For spalte = Anfangswert(i - 5) To Endwert(i - 5)
...
Next spalte
Next i

End Sub


Du müsstest es halt noch auf deine komplette Werte-Liste anpassen.
Hierbei handelt es sich um ein statisches Array, prinzipiell kannst du die Werte auch einzeln per Zuweisung zuordnen.
Das erste Array-Element beginnt mit 0 an zu zählen, deshalb habe ich i-5 gesetzt, funktioniert dann natürlich nur bei einfachem For-Step.
In deinem Fall hätten die Array dann halt von 5 - 10 = 6 Elemente, d.h. Array(0) bis Array(5), musst du halt erweitern und aufpassen, dass du die Elemente nicht vertauschst.

Gruß
[list] Primut[/list]
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

noch eine variante :-))

gruss nighty

Sub Schleife()
Dim Bereiche As Range
Dim zelle As Range
Set Bereiche = Application.Union(Range("A2:A3"), Range("B3:B5"), Range("C3:E3"))
For Each zelle In Bereiche
Cells(zelle.Row, zelle.Column) = "hallihallo"
Next zelle
End Sub
...