Programmieren mit Visual Basic für Applikationen (VBA)

Schleifen

 aufwärts

Eine Schleife dient dazu, ein Programm­stück mehrfach zu wiederholen. Schleifen kommen in Computer­programmen sehr häufig vor, denn der Computer kann dies am besten: immer dasselbe tun, ohne müde zu werden. Bei einem Sortier­verfahren beispiels­weise werden in einer Schleife solange bestimmte Daten­elemente vertauscht, bis alle in der richtigen Reihenfolge stehen.

While-Schleife

Bei einer While-Schleife wird ein bestimmtes Programm­stück, der Schleifen­körper, solange wiederholt, wie eine bestimmte Bedingung, die Schleifen­bedingung, erfüllt ist.

Die While-Schleife hat die allgemeine Form

Do While bedingung
      anweisung1
             drei Punkte übereinander 
      anweisungn
Loop

Hier ist bedingung die Schleifen­bedingung. Es muss sich um einen Ausdruck handeln, der True oder False ergibt. Die Schleifen­bedingung steht hinter den Wörtern Do While (engl.: while – solange).

Danach folgt der Schleifen­körper, also das Programm­stück, das wiederholt werden soll, hier dargestellt durch die Anweisungen anweisung1, ..., anweisungn.

Das Ende des Schleifen­körpers wird durch das Wort Loop angezeigt.

Bei Ausführung der While-Schleife wird zunächst geprüft, ob die Schleifen­bedingung erfüllt ist, d.h. ob sie den Wert True ergibt. Ist dies der Fall, so werden die Anweisungen des Schleifen­körpers ausgeführt. Wenn der Schleifen­körper fertig ausgeführt ist, springt das Programm wieder an den Anfang der While-Schleife und prüft erneut die Schleifen­bedingung. Ist diese immer noch erfüllt, wird der Schleifen­körper erneut ausgeführt usw. – solange, bis die Schleifen­bedingung irgendwann einmal nicht mehr erfüllt ist. Dann wird der Schleifen­körper nicht mehr ausgeführt, sondern es wird mit den hinter dem Schleifen­körper folgenden Anweisungen fortgefahren.

Beispiel:  Die folgende While-Schleife schreibt die ersten 10 Quadrat­zahlen unter­einander in ein Excel-Tabellen­blatt.

i = 1
Do While i <= 10
    Cells(i, 1) = i * i
    i = i + 1
Loop

Hier ist die Schleifen­bedingung der Ausdruck i <= 10, und der Schleifen­körper besteht aus den zwei Anweisungen Cells(i, 1) = i * i und i = i + 1.

Damit die Schleifen­bedingung ausgewertet werden kann, wird vor Beginn der While-Schleife die Variable i mit einem Wert belegt.

In diesem Beispiel ist die Schleifen­bedingung zu Anfang erfüllt, denn i hat den Wert 1, und es gilt 1kleiner gleich10. Somit wird mit Cells(i, 1) = i * i der Wert von i * i, also 1, in Zelle A1 des Tabellen­blatts geschrieben. Mit der Anweisung i = i + 1 wird anschließend der Wert von i um 1 erhöht, also auf 2 gesetzt.

Damit ist der Schleifen­körper fertig ausgeführt. Das Programm springt wieder an den Anfang der While-Schleife und prüft erneut die Schleifen­bedingung. Diese ist immer noch erfüllt, denn es ist 2kleiner gleich10, also wird der Schleifen­körper erneut ausgeführt usw. – solange bis i den Wert 11 erreicht hat, dann wird der Schleifen­körper nicht mehr ausgeführt.

Der Programm­ablauf einer While-Schleife lässt sich wiederum mit Hilfe eines Fluss­diagramms ver­anschaulichen. Das Fluss­diagramm für das obige Beispiel­programm ist in Bild 1 dargestellt.

Bild 1: Flussdiagramm des  Beispielprogramms (While-Schleife)
Bild 1: Flussdiagramm des Beispielprogramms (While-Schleife)

For-Schleife

Häufig dienen Schleifen dazu, Anweisungen eine bestimmte Anzahl von Malen zu wiederholen. Im vorigen Beispiel etwa wird zehnmal etwas ausgegeben. Wie wir gesehen haben, lässt sich dies mit einer While-Schleife realisieren. Ein kompakterer Programmcode ergibt sich jedoch bei Benutzung der For-Schleife:

For i = 1 To 10
    Cells(i, 1) = i * i
Next i

Bei der For-Schleife werden nur der Startwert (hier: 1) und der Endwert (hier: 10) für die sogenannte Laufvariable (hier: i) angegeben. Das Weiterzählen um 1 geschieht automatisch.

Die For-Schleife hat die allgemeine Form

For laufvariable = startwert To endwert
      anweisung1
             drei Punkte übereinander 
      anweisungn
Next laufvariable

 

Eine For-Schleife ist eine Zählschleife. Normaler­weise wird immer um 1 weitergezählt; es ist jedoch auch möglich, in Zweierschritten oder rückwärts zu zählen. Hierzu muss die Schrittweite mit dem Wort Step angegeben werden:

For laufvariable = startwert To endwert Step schrittweite

Beim Rückwärtszählen ist zu beachten, dass der Startwert größer oder gleich dem Endwert ist, also zum Beispiel:

For i = 10 To 1 Step -1
    ...
Next i

 

Weiter mit:   up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   Datenschutz   ©  
Valid HTML 4.01 Transitional