Wie Du in VBA Schleifen die Arbeit machen lassen kannst (Teil II)

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.

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 H73 sollen 5 Werte eingetragen werden. Zuerst wird die Zählvariable deklariert, hier schreibst Du mal richtig „int“ für den Datentyp Integer.

Sub ForNext6()

Dim intZeile As Integer

For intZeile = 1 To 5

Range(„H“ &72+intZeile)=intZeile

Next intZeile

End Sub

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

Was ist passiert? In Zelle „H“&78+i, also H79 ist der erste i-Wert mit 1 eingetragen worden. Mit Next i wird i auf 2 heraufgesetzt. In Zelle „H“&78+i, jetzt H80, 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(95+intTag,8)=Format(intTag, „dddd“)

Next intTag

End Sub

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 96 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 97. Deshalb sind 95 hinzuzurechnen. So schreibst Du:

Cells(95+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(95+intTag,8)=Format(intTag, „dddd“)

 

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

Sub ForNext8()

Dim intTag As Integer

For intTag=2 To 8

Cells(132,intTag)=Format(intTag, „dddd“)

Next intTag

End Sub

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 B132:H132 aufgelistet.

 
Auf Teil III musst Du leider bis zum 30.06.2015 warten. Darin wird es es um die „Do-Loop-Schleifen“ gehen. Sei gespannt.

 

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s