Informatik :: VBA :: Schleifen

Schleifen

[Allgemeines] [For-Schleife] [While-Schleife] [Do-Schleife] [Aufgaben]

Allgemeines

Merke:
Eine Schleife (Wiederholung) ist eine Programmstruktur, bei der ein bestimmter Programmteil mehrfach abgearbeitet bzw. wiederholt wird.

Seitenanfang

Die For-Schleife

Die Arbeitsweise einer For-Schleife lässt sich am besten am Programmablaufplan (PAP) erklären.
Dabei bedeuten:
i - die Schleifenvariable
AW - der Anfangswert
EW - der Endwert
SW - die Schrittweite

PAP:

Erklärung:
  • Zu Beginn wird der Schleifenvariablen i der Anfangswert AW zugewisen.
  • Dann wird geprüft, ob der Wert von i kleiner oder gleich dem Endwert ist. Dies wird sicher noch wahr sein, denn sonst hätte die Schleife ja keinen Sinn.
  • Da diese Schleifenbedingung also wahr ist, wird der Anweisungsbock, der aus mehreren Anweisungen bestehen kann das erste mal abgeareitet.
  • Dann wird die Schleifenvariable i um die Schrittweite SW erhöht.
  • Nun beginnt der Vorgang von vorn:
  • Es wird wieder die Schleifenbedingung geprüft, ob der Wert von i kleiner oder gleich dem Endwert ist. Sollte dies noch wahr sein, wird die Schleife, d.h. der Anweisungsblock wieder durchlaufen und am Ende i wieder um SW erhöht.
  • Irgendwann wird i größer sein als der EW. Das heißt: Die Schleifenbedingung ist falsch. Dies bedeutet, dass die Schleifenabarbeitung zu Ende ist und es wird mit der folgenden Anweisung (falls vorhanden) fortgefahren.
Da durch die Festlegung von Anfangswert AW, Schrittweite SW und dem Endwert EW genau feststeht, wie oft die Schleife durchlaufen wird, nennt man die For-Schleife auch Zählschleife.
Man verwendet sie, wenn man genau weiß, wie oft die Schleife durchlaufen werden soll.

Struktogramm:

 

Syntax:

Beispiel:

Dim zeile As Integer
Dim i As Single
For i = 100 To 120 Step 0.5
  zeile = 2 * i - 199 'Berechnung der Zeilennummer aus i (Beginn bei 1. Zeile)
  Cells(zeile, 1).Value = i 'Ausgabe der Werte von i in der 1. Spalte
  Cells(zeile, 2).Value = i ^ 0.5 'Ausgabe der Werte von Wurzel(i) in der 2. Spalte
Next i

Hinweise:

Seitenanfang

Die While-Schleife

Die Arbeitsweise einer While-Schleife lässt sich auch am besten am Programmablaufplan (PAP) erklären.

PAP:

Erklärung:
  • Zu Beginn wird die Schleifenbedingung geprüft.
  • Ist diese wahr, wird der Anweisungsbock abgeareitet.
  • Nun beginnt der Vorgang von vorn:
    Es wird wieder die Schleifenbedingung geprüft.
  • Ist diese immer noch wahr, wird der Anweisungsbock erneut abgeareitet.
    Ist die Schleifenbedingung jedoch falsch, so ist die Schleifenabarbeitung zu Ende und es wird mit der folgenden Anweisung (falls vorhanden) fortgefahren.
Da die Schleifenbedingung vor dem ersten Schleifendurchlauf geprüft wird, nennt man die While-Schleife auch kopfgesteuerte Schleife.
Da es sein kann, dass die Schleifenbedingung bei der ersten Prüfung schon falsch ist und somit die Schleife abgewiesen wird, nennt man die While-Schleife auch abweisende Schleife.
Man verwendet sie, wenn die Schleife eventuell überhaupt nicht durchlaufen werden soll.

Struktogramm:

 

Syntax:

Beispiel:

Dim x As Single
x = InputBox("Geben Sie eine beliebige Zahl kleiner 100 ein!")
Do While x < 100
  MsgBox ("x = " & x)
  x = x ^ 2
Loop

Erklärung:
Angenommen es wird die Zahl -3 eingegeben:
Da -3 < 100 eine wahre Aussage ist, wird die Schleife das erste mal durchlaufen. Das heißt, es wird x = -3 ausgegeben und anschließend x = 9 gesetzt.
Da 9 < 100 eine wahre Aussage ist, wird die Schleife das zweite mal durchlaufen. Das heißt, es wird x = 9 ausgegeben und anschließend x = 81 gesetzt.
Da 81 < 100 eine wahre Aussage ist, wird die Schleife das dritte mal durchlaufen. Das heißt, es wird x = 81 ausgegeben und anschließend x = 6561 gesetzt.
Da 6561 < 100 eine falsche Aussage ist, wird die Schleife beendet.

Angenommen es wird die Zahl 0,3 eingegeben:
Da 0.3 < 100 eine wahre Aussage ist, wird die Schleife das erste mal durchlaufen. Das heißt, es wird x = 0.3 ausgegeben und anschließend x = 0.09 gesetzt.
Da 0.09 < 100 eine wahre Aussage ist, wird die Schleife das zweite mal durchlaufen. Das heißt, es wird x = 0.09 ausgegeben und anschließend x = 0.0081 gesetzt.
Wie du sicher gemerkt hast, wird x bei jedem Schleifendurchlauf kleiner, wird also nie größer 100 werden. Die Schleifenabarbeitung ist nie zu Ende!!!

Merke:
Achte immer darauf, dass die "Schleifenbedingung" irgendwann einmal falsch wird.
Sollte sie immer wahr bleiben, so hast du eine Endlos-Schleife programmiert. Falls dies einmal passieren sollte, so musst du via Task-Manager das Excel-Programm beenden!
Falls du Exceldatei mit dem Makro nicht gespeichert haben, so ist dein Programm ntürlich nicht mehr vorhanden. Aber das wäre in diesem Fall nicht so schlimm, denn es ist ja so wie so schlecht gewesen.

Seitenanfang

Die Do-Schleife

Die Arbeitsweise einer Do-Schleife lässt sich wieder am besten am Programmablaufplan (PAP) erklären.

PAP:

Erklärung:
  • Die Schleifenanweisungen werden zunächst einmal abgearbeitet.
  • Am Ende wird die Schleifenbedingung geprüft.
  • Ist diese wahr, wird der Anweisungsbock wiederholt.
  • Ist sie jedoch falsch, so ist die Schleifenabarbeitung zu Ende und es wird mit der folgenden Anweisung (falls vorhanden) fortgefahren.
Da die Schleifenbedingung nach dem ersten Schleifendurchlauf geprüft wird, nennt man die Do-Schleife auch fußgesteuerte Schleife.
Da es nicht sein kann, dass die Schleifenabarbeitung beim ersten mal abgewiesen wird, nennt man die Do-Schleife auch nicht abweisende Schleife.
Man verwendet sie, wenn die Schleife wenistens ein mal durchlaufen werden soll. Dies ist in der Praxis bei Eingabe eines ganz bestimmten Wertes erforderlich, also z.B. bei Passworteingaben.

Struktogramm:

 

Syntax:

Beispiel:

Dim pw As String
Do
  pw = InputBox("Geben Sie das Passwort ein!")
Loop While pw <> "x2y9z"

Erklärung:
Man wird aufgefordert, das Passwort einzugeben.
Angenommen, man gibt ein falsches Passwort ein:
Dann ist die "Schleifenbedingung" pw <> "x2y9z" wahr und man wird erneut aufgefordert, das Passwort einzugeben.
Das geht so lange, bis man irgendwann einmal das Passwort x2y9z eingibt. Dann ist die "Schleifenbedingung" pw <> "x2y9z" falsch und die Schleife wird beendet.

Seitenanfang

Aufgaben