Schleifen für sich wiederholende Programmteile
741
Programmierung
Schleifen für sich wiederholende
Programmteile
Benötigt man in einem Programm bestimmte Programmzeilen mehrmals hintereinander, verwen-
det man Schleifen, um die Programmzeilen nicht mehrfach eingeben zu müssen. Dabei gibt es vier
verschiedene Varianten von Schleifen:
Do...Loop
,
For...Next
,
For Each...Next
und
While...Wend
, die
nacheinander in diesem Abschnitt besprochen werden.
Die Schleife Do...Loop
Die
Do...Loop
-Schleife gibt es in zwei verschiedenen Varianten. Eine
Do...Loop
-Schleife wiederholt
die eingeschlossenen Anweisungen entweder bis (
Until
) eine angegebene Bedingung den Wert
True
erhält oder solange (
While
) die Bedingung den Wert
True
hat.
Allgemein lässt sich eine solche Schleife durch
oder auch durch
definieren. Mithilfe der Zeile
Exit Do
können Sie bei Bedarf die
Do...Loop
-Schleife auch vorzeitig
verlassen.
In Abbildg. 34.13 sehen Sie ein kleines Programm, das eine
Do...Loop
-Schleife verwendet. Innerhalb
der Schleife wird mit
InputBox
ein Eingabedialogfeld aufgerufen, in dem ein Nettobetrag abgefragt
wird. Aus diesem Nettobetrag werden mithilfe der eingebundenen Funktionen
BerechneMwst()
und
BerechneBrutto()
die Mehrwertsteuer und der Bruttowert berechnet, danach werden Netto-,
Brutto- und der Mehrwertsteuerbetrag aufsummiert. Die Schleife wird so lange durchlaufen, bis in
der
InputBox
der Wert 0 (der als Standardwert definiert ist) zurückgegeben wird, bis also keine Ein-
gabe mehr vorgenommen wird. Dann gibt ein Meldungsdialogfeld (
MsgBox
) die Summen aus.
Do [{Until | While} Bedingung]
[Anweisungen]
[Exit Do]
[Anweisungen]
Loop
Do
[Anweisungen]
[Exit Do]
[Anweisungen]
Loop [{Until | While} Bedingung]
Kapitel 34
Visual Basic für Applikationen
742
Abbildg. 34.13
Beispiel einer
Do...Loop
-Schleife
In der
MsgBox
für die Anzeige des Ergebnisses wird die vordefinierte Konstante
vbCrLf
verwendet, um eine neue Zeile im Dialogfeld zu erzeugen.
Die Schleife For...Next
Für die
For...Next
-Schleife ist ein Zähler erforderlich, der das Durchlaufen der Schleife steuert. Die
allgemeine Form einer
For...Next
-Schleife lautet:
Für den Zähler ist der Anfangswert, der Endwert und die Schrittweite anzugeben, falls sie von 1
abweicht.
Im folgenden Beispielprogramm läuft der Zähler
intWochentag
von 1 bis 7. Da keine alternative
Schrittweite angegeben ist, werden die Anweisungen der Schleife sieben Mal aufgerufen. Durch die
Anweisung
Next
wird der Wert des Zählers um 1 erhöht.
HINWEIS
For Zähler = Anfang To Ende [Step Schritt]
[Anweisungen]
[Exit For]
[Anweisungen]
Next [Zähler]
Schleifen für sich wiederholende Programmteile
743
Programmierung
Abbildg. 34.14
Die
For...Next
-Schleife
Jedes Mal wird ein Dialogfeld angezeigt, das die Zuweisung der Zahlen 1 bis 7 zu den entsprechen-
den Wochentagen Donnerstag bis Mittwoch ausgibt.
Abbildg. 34.15
Das angezeigte Dialogfeld
Möchten Sie eine andere Schrittweite als 1 verwenden, können Sie mit
Step
die Schrittweite variieren.
So lässt sich wie im folgenden Beispiel
eine größere Schrittweite oder wie in
gar eine negative Schrittweite angeben. Im ersten Beispiel wird die Schleife für die Werte 2, 4, 6, ... 40
durchlaufen, im zweiten Beispiel für die Werte 40, 38, 36, ... 2.
For intJahre = 2 To 40 Step 2
...
Next
For intJahre = 40 To 2 Step -2
...
Next
Kapitel 34
Visual Basic für Applikationen
744
Die Schleife For Each...Next
Die
For Each...Next
-Schleife bearbeitet alle Elemente eines Datenfeldes oder einer Auflistung
(Kapitel 35), ohne dass Sie vorher wissen müssen, um wie viele Elemente es sich dabei handelt. Die
allgemeine Form einer solchen Schleife lautet:
Das folgende Beispiel verwendet die
For Each...Next
-Schleife, um nacheinander alle Elemente des
Datenfeldes
avarWochentag
zu durchlaufen. Interessant dabei ist, dass die Schleifenvariable, hier im
Beispiel
varWochentag
, nicht ein Zähler, z.B. vom Typ
Integer
, ist, sondern den gleichen Datentyp
wie die Elemente des zu durchlaufenden Datenfeldes hat.
varWochentag
beinhaltet in der Schleife
also im Beispiel jeweils die entsprechende Zeichenkette.
Im Programm wird die Schleife sieben Mal durchlaufen. Bei jedem Durchlauf wird ein Meldungs-
dialog entsprechend dem in Abbildg. 34.16 gezeigt.
For Each Element In Gruppe
[Anweisungen]
[Exit For]
[Anweisungen]
Next [Element]
Sub Wochentage()
Dim avarWochentag As Variant
Dim varWochentag As Variant
avarWochentag = Array("Donnerstag", "Freitag", "Samstag", _
"Sonntag", "Montag", "Dienstag", "Mittwoch")
For Each varWochentag In avarWochentag
MsgBox "Vorstellungstermine am " & varWochentag & ": " _
& Vorstellungstermine(varWochentag)
Next
End Sub
Function Vorstellungstermine(varTag As Variant) As String
' Gibt für jeden Tag Termine zurück
Select Case varTag
Case "Donnerstag"
Vorstellungstermine = "20:00"
Case "Freitag"
Vorstellungstermine = "20:00 + 22:00"
Case "Samstag"
Vorstellungstermine = "15:00 + 20:00 + 22:00"
Case "Sonntag"
Vorstellungstermine = "15:00 + 20:00 + 22:00"
Case "Montag"
Vorstellungstermine = "20:00 + 22:00"
Case "Dienstag"
Vorstellungstermine = "20:00"
Case "Mittwoch"
Vorstellungstermine = "20:00"
End Select
End Function

Get Microsoft Office Access 2007 - Das Handbuch now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.