Die For-Next-Schleife in VBA (II)

fornext9 2

Im Teil I habe ich Dir gezeigt, wie Du For – Next – Schleifen in einem Makro einrichten und bestimmte Arbeiten, wie hoch und runter zählen, ausführen lassen kannst.

Der heutige Teil II bleibt noch bei der For – Next – Schleife und widmet sich dem Ausfüllen von Zellen mittels, eben dieser Schleifenart.

d658e64daf9841c3afa163ddfe3abea8

Nun hast Du die ganze Zeit hoch und runter zählen lassen und möchtest jetzt eine praktische Anwendung sehen.

Dazu wieder ein ganz kleines Beispiel:

Beginnend ab H2 sollen 5 Werte eingetragen werden. Zuerst wird die Zählvariable deklariert, hier schreibst Du diesmal richtig “int” für den Datentyp Integer.

Sub ForNext6()
Dim intZeile As Integer
For intZeile=1 To 5
Cells(1+intZeile,8)=intZeile
Next intZeile
End Sub

fornext7 1

Die Zellen H2:H6 enthalten nach Ausführung des Makros nun die Werte von 1 bis 5.

Was ist passiert? Die Variable “intZeile” hat anfangs den Wert 1. In Zelle Cells(1+intZeile,8) also H2 ist der erste i-Wert mit 1 eingetragen worden. Mit Next i wird i auf 2 heraufgesetzt. In Zelle Cells(1+intZeile,8), jetzt H3, wird der zweite i-Wert mit 2 eingetragen. Das passiert solange bis i = 5 ist, denn die Grenze wurde mit For i = 1 To 5 gesetzt.

Statt der Werte von 1 bis 5 willst Du vielleicht die Wochentage von Montag bis Sonntag aufgelistet haben. Dabei musst Du bedenken, dass in Amerika, Excel kommt schließlich von dort, die Woche schon am Sonntag beginnt. Das ist nun mal so. Deshalb schreibst Du bei der For-Anweisung nicht “= 1 To 7”, sondern “=2 To 8”. In der Regel beginnts Du nicht jede Tabelle in A1. Berücksichtige das in Cells, hier mit 95 + intTag.

Sub ForNext7()
Dim intTag As Integer
For intTag=2 To 8
Cells(8+intTag,8)=Format(intTag, “dddd”)
Next intTag
End Sub

fornext8 1

Was ist passiert? Die Cells-Methode benötigt zuerst die Zeile, dann die Spalte als Argument. Die Wochentage sollen in Spalte H, also Spalte 8, ab Zeile 10 aufgelistet werden. Die Zeilenangabe soll mittels der Variablen intTag von Tag zu Tag geändert werden. Du willst aber nicht in Zeile 2 beginnen, sondern in Zeile 10. Deshalb sind 8 hinzuzurechnen. So schreibst Du:

Cells(8+intTag,8)

Der Wochentag soll nicht als Zahl, sondern als Wort ausgegeben werden. Um die Zellen mit einem Datumsformat zu versehen, schreibst Du:

Format(intTag, “dddd”)

Der Cells-Ausdruck insgesamt lautet also:

Cells(8+intTag,8)=Format(intTag, “dddd”)

Du kannst die Wochentage natürlich auch spaltenweise auflisten. Dann schreibst Du:

Sub ForNext8()
Dim intTag As Integer
For intTag=2 To 8
Cells(20,intTag)=Format(intTag, “dddd”)
Next intTag
End Sub

fornext9 2

Die Variable intTag wird hier zum Spaltenargument, im Beispiel zuvor war sie Zeilenargument. Nach Ausführung des Makros sind die Wochentage Montag bis Sonntag in B20:H20 aufgelistet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Plugin von Real Cookie Banner