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

Heute beginne ich eine Artikelserie. Es geht um die Verwendung von Schleifen in der VBA-Programmierung. Dieser Artikel, Teil I, behandelt die For – Next – Schleifen. Der Teil II wird übrigens in 14 Tagen, am 16.06.2015 veröffentlich, genug Zeit also, das hier Vorgestellte auszuprobieren. Viel Spaß damit.Hast Du schon mal versucht, mit den vorhandenen Excel-Funktionalitäten einen Arbeitsschritt mehrfach hintereinander ausführen zu lassen? Versucht bestimmt schon, aber es wird Dir nicht gelungen sein. Mit VBA kannst Du das.

Schleifen ermöglichen, Programmanweisungen mehrmal hintereinander auszuführen. Du sollst Schritt für Schritt sehen, welche Arten von Schleifen es gibt und was Du damit anfangen kannst. Da gibt es zunächst die Zählschleifen. Bei Zählschleifen wird die Anzahl der Durchläufe durch eine Konstante oder eine Variable festgelegt.

Die erste Art ist die For – Next – Schleife. Sie zählt in der Regel ganzzahlige Variablen hoch oder runter und das in ganzzahligen Schritten.

Ein erstes Beispiel soll das verdeutlichen: Du hast Ganzzahlen von 1 bis 5 und willst hochzählen lassen. Dazu schreibst Du in Deinem Modul folgendes Makro:

Sub ForNext1()

Dim i As Integer ‚ nach unseren Namenskonventionen eigentlich int…, i ist als Zählvariable allgemein üblich

For i=1 To 5

Next i

End Sub

Lässt Du das Makro so laufen, bekommst Du nichts, aber auch gar nichts von der Ausführung mit. Das Makro führt die Schleife sozusagen intern, ohne Kontakt nach außen, aus. Deshalb baust Du Dir eine MsgBox ein, die Dir entweder jeden erreichten Stand oder das Ende des Makros anzeigt.

Sub ForNext2()

Dim i As Integer

For i=1 To 5

MsgBox i ‚ erreichter Stand

Next i

End Sub

Die MsgBox zeigt nacheinander an: 1, 2, 3, 4, 5.

Sub ForNext3()

Dim i As Integer

For i=1 To 5

Next i

MsgBox („Der Endstand von i ist erreicht!“) ‚ Endstand

End Sub

OK, das war noch ganz einfach. Als nächstes willst Du mal probieren, ob das Makro auch in festgelegten Schritten hochzählen kann. Du legst i jetzt auf 1 bis 10 fest, sonst lohnt es nicht, und willst in 2-Schritten zählen lassen. Mit „Step“ kennzeichnest Du im Makro die Schrittfolge.

Sub ForNext4()

Dim i As Integer

For i=1 To 11 Step 2

MsgBox i ‚ erreichter Stand

Next i

End Sub

Die MsgBox zeigt nacheinander an: 1, 3, 5, 7, 9, 11.

Du fragst Dich, ob auch rückwärts gezählt werden kann? Es kann, und zwar so:

Sub ForNext5()

Dim i As Integer

For i=11 To 1 Step -2 ‚ rückwärts von 11 zu 1 zählen, Schrittfolge negativ

MsgBox i ‚ erreichter Stand

Next i

End Sub

Die MsgBox zeigt jetzt nacheinander an: 11, 9, 7, 5, 3, 1.

Weiter geht es in 14 Tagen mit Teil II.

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