VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches...

98
Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Bedingte Anweisungen und Schleifen

Transcript of VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches...

Page 1: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

Regionales Rechenzentrum für Niedersachsen

VBA (Visual Basic for Application)

Bedingte Anweisungen und Schleifen

Page 2: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 2Access 2007 – VBA | 25.06.08 | Seite 2

Regionales Rechenzentrum für Niedersachsen

Algorithmus

Genau definierte Verarbeitungsvorschrift zur Lösung einer Aufgabe. Beschreibung eines Schemas, welches unter Verwendung von endlich

vielen Arbeitsschritten ein bestimmtes Problem löst. Endliche Folge von Anweisungen, die nacheinander ausgeführt werden.

Anweisungen bestehen aus Schlüsselwörtern aus VBA sowie aus Operatoren und Operanden.

Manche Anweisungen werden nur unter bestimmten Bedingungen durchlaufen.

Die Anweisungen können unter bestimmten Bedingungen wiederholt werden.

Beispiele aus dem täglichen Leben: Kochrezepte Steuerprogramme für technische Geräte (Waschmaschinen etc.)

Page 3: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 3Access 2007 – VBA | 25.06.08 | Seite 3

Regionales Rechenzentrum für Niedersachsen

Beispiel für einen Algorithmus: Bedienung einer Waschmaschine

Tür der Waschmaschine öffnen. Max. 5 kg Wäsche (einer Farbe ) einfüllen. Tür der Waschmaschine schließen. Waschmittel passend zur Farbe der Wäsche in die kleine Schublade für

den Hauptwaschgang füllen. Wasserzulauf öffnen. Waschprogramm wählen. Starttaste drücken. Waschvorgang abwarten. Nach Programm-Ende Maschine abstellen. Wasserzulauf schließen. Tür öffnen und Wäsche entnehmen.

Page 4: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 4Access 2007 – VBA | 25.06.08 | Seite 4

Regionales Rechenzentrum für Niedersachsen

Eigenschaften eines Algorithmus

Ein Algorithmus benötigt endlich viele Arbeitsschritte. Ein Algorithmus ist beschreibbar. Jeder Arbeitsschritt ist ausführbar. Ein Algorithmus liefert unter identischen Startbedingungen immer das

gleiche Endergebnis. Der Ablauf des Verfahrens ist eindeutig definiert.

Page 5: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 5Access 2007 – VBA | 25.06.08 | Seite 5

Regionales Rechenzentrum für Niedersachsen

Beispiel für ein Algorithmus

Aufgabe: Suche ein bestimmtes Wort in einen Text.

Eingangsdaten: Variable text: Zeichenfolge (String), in der ein bestimmtes Wort gesucht

werden soll. Variable wort: Zeichenfolge, die gesucht wird.

Ausgangsdaten: Ist das Wort in der Zeichenfolge satz vorhanden?

Page 6: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 6Access 2007 – VBA | 25.06.08 | Seite 6

Regionales Rechenzentrum für Niedersachsen

Grafische Darstellung von Algorithmen

... in einem Flussdiagram: Ein Flussdiagramm ist ein Ablaufdiagramm für Computerprogramme. Die benutzten Symbole sind in der DIN 66001 genormt.

... in einem Struktogramm: Struktogramme werden auch als Nassi-Shneidermann-Diagramme

bezeichnet. Die benutzten Symbole sind in der DIN 66261 genormt. Struktogramm-Editoren sind unter

http://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm zu finden.

Page 7: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 7Access 2007 – VBA | 25.06.08 | Seite 7

Regionales Rechenzentrum für Niedersachsen

Beispiel: Suche nach einem Wort

Flussdiagramm

Page 8: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 8Access 2007 – VBA | 25.06.08 | Seite 8

Regionales Rechenzentrum für Niedersachsen

Beispiel: Suche nach einem Wort

Struktodiagramm

Page 9: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 9Access 2007 – VBA | 25.06.08 | Seite 9

Regionales Rechenzentrum für Niedersachsen

Vorteile von Struktogrammen

Struktogramme erzwingen einen sequentiellen Programmablauf ohne Sprünge.

Im Allgemeinen führt die Verwendung von Struktogrammen dazu, dass Programme besser strukturiert sind, als bei der Verwendung von Programmablaufplänen.

Verwenden Sie vorzugsweise (zumindest während Sie ihre erste Programmiersprache lernen) Struktogramme.

Bevor Sie mit der Codierung beginnen, machen Sie einen Programmentwurf.

Page 10: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 10Access 2007 – VBA | 25.06.08 | Seite 10

Regionales Rechenzentrum für Niedersachsen

Kontrollstrukturen

Mit Hilfe von Kontrollstrukturen kann der Programmablauf beeinflusst werden.

In Abhängigkeit vom Wert einer oder mehrerer Variablen wird der Programmablauf gesteuert.

Es gibt folgende Möglichkeiten: Auswahlanweisungen:

– Bedingte Anweisungen; if – then - Anweisungen– Fallunterscheidungen; select - case - Anweisungen

Schleifen (Iterationsanweisungen):– Kopfgesteuerte Schleifen: while – wend – Schleifen oder do – loop -Schleifen– Fußgesteuerte Schleifen: do – loop - Schleifen– Zählschleifen: for – next - Schleifen

Schleifen können vom Programmierer unter bestimmten Bedingungen unterbrochen werden.

Page 11: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 11Access 2007 – VBA | 25.06.08 | Seite 11

Regionales Rechenzentrum für Niedersachsen

Bedingte Anweisungen

... oder Selektionsanweisungen. Dem Schlüsselwort If (wenn) folgt eine Bedingung. Wenn diese Bedingung erfüllt ist, dann werden alle Anweisungen bis zum

End If ausgeführt. End... markiert das Ende eines Blocks. Hier: Das Ende einer if-

Anweisung. Andernfalls werden die Anweisungen nach dem if-Block ausgeführt.

If (bedingung) ThenAnweisung

End If

Anweisung

Page 12: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 12Access 2007 – VBA | 25.06.08 | Seite 12

Regionales Rechenzentrum für Niedersachsen

Flußdiagramm und Struktogramm

Flussdiagramm

Struktogramm

Bedingung

Anweisung 1

ja

nein

Anweisung 1

Bedingungja nein

Page 13: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 13Access 2007 – VBA | 25.06.08 | Seite 13

Regionales Rechenzentrum für Niedersachsen

Beispiel

bestellPreis = (bestellmenge * preis)rabatt = 0.0

If (bestellmenge > 100) Thenrabatt = 0.03rabattPreis = bestellPreis * rabattbestellPreis = bestellPreis - rabattPreis

End If

Debug.Print "Endsumme: " & bestellPreis

Page 14: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 14Access 2007 – VBA | 25.06.08 | Seite 14

Regionales Rechenzentrum für Niedersachsen

Bedingungen

... sind Ausdrücke, die einen boolschen Wert zurückliefern. ... vergleichen mit Hilfe von bestimmten Operatoren zwei Werte. ... sind zum Beispiel:

Wenn die Bestellmenge eine gewisse Höchstmenge überschreitet... Wenn der Kontostand dem Dispo entspricht... Wenn die Strecke A doppelt so lang ist wie Strecke B... Wenn die Warenmenge eine Mindestmenge unterschreitet...

Page 15: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 15Access 2007 – VBA | 25.06.08 | Seite 15

Regionales Rechenzentrum für Niedersachsen

Vergleichsoperatoren

Operator Beispiel = ist gleich< ist kleiner als<= ist kleiner gleich als> ist größer als>= ist größer gleich als<> ist ungleich

Rechenart(7 = 3 ) => False(7 < 3 ) => False(7 <= 3 ) => False(7 > 3 ) => True(7 >= 3 ) => True(7<> 3 ) =>True

Page 16: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 16Access 2007 – VBA | 25.06.08 | Seite 16

Regionales Rechenzentrum für Niedersachsen

Strings vergleichen

Strings können mit Hilfe des Gleichheitszeichen verglichen werden. Nachteil: Platzhalter für einzelne Zeichen können nicht genutzt werden. DIe Klammerung des Vergleichsausdrucks erhöht die Lesbarkeit.

Strings können mit Hilfe von Like verglichen werden. Ein Wort wird mit einem Suchmuster verglichen. "Ist ähnlich" dem Wort...

Die Option Compare – Anweisung am Anfang des Moduls legt die Art des Vergleichs fest.

Dim zeichen As StringDim result As Boolean

gleich = zeichen Like "World"result = (zeichen = "World")

K03_conditionLoop.accdb:Modul conditionLoopProzedur: strVergleich

Page 17: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 17Access 2007 – VBA | 25.06.08 | Seite 17

Regionales Rechenzentrum für Niedersachsen

Vergleichsarten

Option Compare Binary am Anfang des Moduls oder vbBinaryCompare als Parameter: ... ist die Standardeinstellungen. Die Zeichen werden nach der Codierung in der ANSI-Tabelle verglichen. A < B < C... < Z < a < b < c .... < z.

Option Compare Text am Anfang des Moduls oder vbTextCompare als Parameter: Der Text wird miteinander verglichen. Ein Zeichen, egal ob groß oder klein geschrieben, hat die gleiche Gewichtung. A = a < B = b ...

Option Compare Database am Anfang des Moduls oder vbDatabaseCompare als Parameter: Die Zeichen werden in Abhängigkeit der Einstellungen der Datenbank verglichen. Klicken Sie in Access auf die Schaltfläche Office und anschließend auf Access-

Optionen. Wählen Sie die Kategorie Häufig verwendet aus. In dem Bereich Datenbank erstellen auf der rechten Seite wird die Sortierreihenfolge angegeben.

Page 18: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 18Access 2007 – VBA | 25.06.08 | Seite 18

Regionales Rechenzentrum für Niedersachsen

Platzhalter in Texten nutzen

Mit Hilfe des Fragezeichens wird genau ein Zeichen ersetzt. Mit Hilfe des Sternchens wird kein oder mehrere beliebige Zeichen ersetzt. Mit Hilfe des Hash # wird genau ein numerisches Zeichen (0..9) ersetzt. Ein Bereich von Zeichen [Beginn-Ende] wird durch eckige Klammern

begrenzt. Eine Liste von Zeichen [char01, char02, ...] wird mit Hilfe der eckigen

Klammern zusammengefasst. Ein Ausrufezeichen invertiert die angegebenen Werte. Die Platzhalter

dürfen nicht enthalten sein.

Page 19: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 19Access 2007 – VBA | 25.06.08 | Seite 19

Regionales Rechenzentrum für Niedersachsen

Beispiele

Vergleich ErläuterungDas Wort muss exakt dem Suchwort entsprechen.Like "World"

Like "M*" Das Wort muss mit M beginnen. Alle nachfolgenden Zeichen sind nicht definiert.

Like "M*er" Das Wort muss mit M beginnen und mit "er" enden. Zwischen diesen beiden Angaben kann eine beliebige Anzahl von Zeichen stehen.

Like "M??er" Das Wort muss mit M beginnen und mit "er" enden. Zwischen diesen beiden Angaben stehen exakt zwei Zeichen.

Like "31###" Der Text beginnt mit 31 und hat eine Länge von 5 Zeichen.

Like "B[a, u]ch An der zweiten Position des Textes darf ein a oder u stehen.

Like "3115[1-5] An der fünften Position der Postleitzahl kann eine 1, 2, 3, 4 oder 5 stehen.

Page 20: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 20Access 2007 – VBA | 25.06.08 | Seite 20

Regionales Rechenzentrum für Niedersachsen

Beispiele

Vergleich ErläuterungLike "[!0-9]-###-####" An der ersten Position dürfen keine Zahlen

stehen. "A-234-3456" würde dem Suchmuster entsprechen.

Like "[!A-C]-###-[A-C]" An der ersten Position dürfen die Zeichen A, B und C nicht stehen. An der letzten Position muss ein A, B oder C stehen. "D-345-A' entspricht dem Suchmuster.

Like "A*e?" Das Wort beginnt mit A, dem beliebig viele Zeichen folgen. Am Ende des Wortes steht ein e, gefolgt von einem Zeichen.

Page 21: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 21Access 2007 – VBA | 25.06.08 | Seite 21

Regionales Rechenzentrum für Niedersachsen

Andere Möglichkeit: StrComp()

StrComp() vergleicht ein Text mit einem Muster. Folgende Parameter werden der Funktion übergeben:

Der zu vergleichende Text. Das Muster, mit dem verglichen wird. Die Art des Vergleichs.

Dim text As StringDim suchwort As StringDim result As Integer

result = StrComp(text, suchwort, vbTextCompare)

Page 22: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 22Access 2007 – VBA | 25.06.08 | Seite 22

Regionales Rechenzentrum für Niedersachsen

Rückgabewerte

Die Zeichenfolge und das Suchmuster sind gleich: result = 0 Die Zeichenfolge liegt im Alphabet vor dem Suchmuster: result = -1 Die Zeichenfolge liegt im Alphabet hinter dem Suchmuster: result = 1 Suchmuster oder Zeichenfolge sind leer: result = ""

Dim text As StringDim suchwort As StringDim result As Integer

result = StrComp(text, suchwort, vbTextCompare)

Page 23: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 23Access 2007 – VBA | 25.06.08 | Seite 23

Regionales Rechenzentrum für Niedersachsen

Logische Operatoren

... oder relationale Operatoren. ... verknüpfen zwei oder mehr Bedingungen miteinander. Folgende Möglichkeiten sind vorhanden:

AND (Und, Konjunktion) ist nur wahr, wenn alle Bedingungen wahr sind. OR (Oder, Disjunktion) ist wahr, sobald eine der Bedingungen wahr ist. NOT (Negation) invertiert den boolschen Wert der Bedingung. XOR (Antivalenz) ist wahr, wenn zwei Bedingungen ein unterschiedliches

Ergebnis liefern. EQL (Äquivalenz) ist wahr, wenn zwei Bedingungen das gleiche Ergebnis

liefern IMP (Implikation) ist wahr, wenn der erste Parameter falsch ist oder der zweite

Parameter wahr ist.

Page 24: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 24Access 2007 – VBA | 25.06.08 | Seite 24

Regionales Rechenzentrum für Niedersachsen

Wahrheitstabelle

Bedingunga b Not a a AND b a OR b a XOR b a EQV b a IMP b

false false true false false false true truefalse true true false true true false truetrue false false false true true false falsetrue true false true true false true true

Page 25: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 25Access 2007 – VBA | 25.06.08 | Seite 25

Regionales Rechenzentrum für Niedersachsen

Beispiel: NOT-Verknüpfung

Dim zahlA As IntegerDim zahlB As IntegerDim result As Integer

If NOT(zahlB >= 0) ThenDebug.Print "Division durch Null nicht erlaubt"

Elseresult = zahlA / zahlB

End If

If (zahlB <> 0) Then result = zahlA / zahlBElse

Debug.Print "Division durch Null nicht erlaubt"End If

Page 26: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 26Access 2007 – VBA | 25.06.08 | Seite 26

Regionales Rechenzentrum für Niedersachsen

Beispiel: AND-Verknüpfung

bestellPreis = (bestellmenge * preis)rabatt = 0.0

If ((bestellmenge > 100) AND (bestellmenge < 500)) Thenrabatt = 0.03rabattPreis = bestellPreis * rabattbestellPreis = bestellPreis - rabattPreis

End If

Debug.Print "Endsumme: " & bestellPreis

Page 27: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 27Access 2007 – VBA | 25.06.08 | Seite 27

Regionales Rechenzentrum für Niedersachsen

Beispiel: OR-Verknüpfung

Dim zahl As IntegerDim faktor As Integer

If ( (zahl < 10) OR (zahl > 20) ) Then MsgBox "Die Zahl ist nicht korrekt."

End If

Page 28: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 28Access 2007 – VBA | 25.06.08 | Seite 28

Regionales Rechenzentrum für Niedersachsen

Bindung und Auswertung

Beispiel: (var1 <> var2) AND (var2 > 10) Zuerst wird die linke Bedingung (var1 <> var2) ausgewertet. Anschließend wird die rechte Bedingung (var2 > 10) ausgewertet. Beide Ergebnisse müssen in diesen Fall wahr sein, um die if-Anweisung

auszuführen. Sie können die Operatoren beliebig oft in beliebiger Mischung in einer

Bedingung nutzen. Um die Lesbarkeit zu erhöhen, sollten die verschiedenen Elemente der

Bedingung mit runden Klammern zusammengefasst werden. Es sollten nicht mehr als drei logische Operatoren in einer Bedingung

genutzt werden. Falls verschiedene Operatoren gemischt werden, muss die Bindung der

Operatoren beachtet werden. NOT hat eine höhere Bindung als AND. AND hat eine höhere Bindung als OR. Anschließend folgen XOR, EQV und IMP.

Page 29: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 29Access 2007 – VBA | 25.06.08 | Seite 29

Regionales Rechenzentrum für Niedersachsen

Beispiel

Not (( 5 > 4) AND (3 <> 2))

wahr wahr

wahr

false

Page 30: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 30Access 2007 – VBA | 25.06.08 | Seite 30

Regionales Rechenzentrum für Niedersachsen

Bindungen der Operatoren

Hoch NiedrigHoch ^ & <> = < <= => > NOT

+ - (Vorzeichen) AND* / OR\ XOR

EQVNiedrig + - IMP

Like

Mod

Page 31: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 31Access 2007 – VBA | 25.06.08 | Seite 31

Regionales Rechenzentrum für Niedersachsen

Nutzung bei Kontrollkästchen

Die Kontrollkästchen werden ihr als Gruppe dargestellt, aber...

... jedes Kontrollkästchen kann die Eigenschaft .Value true (aktiv) oder false (deaktiv) besitzen. Jedes aktive Kontrollkästchen besitzt ein Häkchen.

K03_conditionLoop.accdb:Formular frmObstFormular frmObstAnzahl

Page 32: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 32Access 2007 – VBA | 25.06.08 | Seite 32

Regionales Rechenzentrum für Niedersachsen

Code

' Sobald auf die Schaltfläche geklickt wird ...Private Sub cmdRechnen_Click() Dim ergebnis As Currency ergebnis = 0 If chkBananen.Value = True Then ergebnis = ergebnis + 1.99 End If If chkBirne.Value = True Then ergebnis = ergebnis + 2.99 End If If chkAepfel.Value = True Then ergebnis = ergebnis + 2.33 End If txtSumme.Value = ergebnis & " €"End Sub

Page 33: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 33Access 2007 – VBA | 25.06.08 | Seite 33

Regionales Rechenzentrum für Niedersachsen

if – then - else

If (bedingung) ThenAnweisung

ElseAnweisung

End If

Anweisung

Wenn die Bedingung erfüllt ist, ...

andernfalls werden die folgenden Anweisungen ausgeführt.

Page 34: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 34Access 2007 – VBA | 25.06.08 | Seite 34

Regionales Rechenzentrum für Niedersachsen

else

... beschreibt den Standardfall. ... fängt alle nicht behandelten Fälle ab. ... kann nur in Verbindung mit einem if-Zweig existieren. ... hat die gleiche Einrücktiefe wie der dazugehörige if-Zweig. ... benötigt keine Bedingung.

If (bedingung) ThenAnweisung

ElseAnweisung

End If

Anweisung

Page 35: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 35Access 2007 – VBA | 25.06.08 | Seite 35

Regionales Rechenzentrum für Niedersachsen

Flussdiagramm und Struktogramm

Struktogramm

Bedingung

Anweisung

ja

nein

An-weisung

Bedingungja nein

An-weisung

Anweisung

Flussdiagramm

Page 36: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 36Access 2007 – VBA | 25.06.08 | Seite 36

Regionales Rechenzentrum für Niedersachsen

Beispiel

bestellPreis = (bestellmenge * preis)

If (bestellmenge > 100) Thenrabatt = 0.03rabattPreis = bestellPreis * rabattbestellPreis = bestellPreis – rabattPreis

Elserabatt = 0.0

End If

Debug.Print "Endsumme: " & bestellPreis

Page 37: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 37Access 2007 – VBA | 25.06.08 | Seite 37

Regionales Rechenzentrum für Niedersachsen

ElseIf - Anweisung

If (bedingung) ThenAnweisung

ElseIf (Bedingung) ThenAnweisung

ElseIf (Bedingung) ThenAnweisung

ElseAnweisung

End If

Anweisung

Wenn die erste Bedingung erfüllt ist, ...

Wenn die zweite Bedingung erfüllt ist, ...

Ansonsten werden folgende Anweisungen ausgeführt.

Wenn die dritte Bedingung erfüllt ist, ...

Page 38: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 38Access 2007 – VBA | 25.06.08 | Seite 38

Regionales Rechenzentrum für Niedersachsen

Flußdiagramm

Fall zulässig

Fallabfrage

Fall 1 Fall 2 Fall n nein

Page 39: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 39Access 2007 – VBA | 25.06.08 | Seite 39

Regionales Rechenzentrum für Niedersachsen

Struktogramm

Fall1Fall 2

Fall n

...

neinFall zulässig?

Page 40: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 40Access 2007 – VBA | 25.06.08 | Seite 40

Regionales Rechenzentrum für Niedersachsen

Beispiel

bestellPreis = (bestellmenge * preis)

If (bestellmenge > 100) AND (bestellmenge < 500) Thenrabatt = 0.03rabattPreis = bestellPreis * rabattbestellPreis = bestellPreis – rabattPreis

ElseIf (bestellmenge >= 500) AND (bestellmenge < 1000) Thenrabatt = 0.05rabattPreis = bestellPreis * rabattbestellPreis = bestellPreis – rabattPreis

Elserabatt = 0.0

End If

Page 41: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 41Access 2007 – VBA | 25.06.08 | Seite 41

Regionales Rechenzentrum für Niedersachsen

Verschachtelte Anweisungen

Innerhalb einer if-Anweisung wird eine weitere if-Anweisung aufgerufen.

Die else-Anweisungen werden entsprechend ihrer Einrückungen den if-Anweisungen zugeordnet.

If (bedingung) ThenAnweisung

If (bedingung) Then

AnweisungElse

AnweisungEnd If

ElseAnweisung

End If

Anweisung

Page 42: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 42Access 2007 – VBA | 25.06.08 | Seite 42

Regionales Rechenzentrum für Niedersachsen

Flussdiagramm

Bedingung

Anweisung

ja

nein

Anweisung

Bedingung

Anweisung

nein

ja

Page 43: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 43Access 2007 – VBA | 25.06.08 | Seite 43

Regionales Rechenzentrum für Niedersachsen

Struktogramm

An-weisung

Bedingungja nein

An-weisung

neinBedingung

ja

Anweisung

Page 44: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 44Access 2007 – VBA | 25.06.08 | Seite 44

Regionales Rechenzentrum für Niedersachsen

Beispiel

Dim zahlA As IntegerDim zahlB As IntegerDim result As Integer

result = zahlA MOD zahlB

If (result = 0) Then

If (zahlA = zahlB) ThenDebug.Print "Die Zahlen sind gleich."

ElseDebug.Print "Division ohne Rest"

End If

ElseDebug.Print "Rest der Division: " & result

End If

Page 45: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 45Access 2007 – VBA | 25.06.08 | Seite 45

Regionales Rechenzentrum für Niedersachsen

Programmierstil

Jede Ebene einer verschachtelten if-Anweisung wird mit Hilfe des Tabulators eingerückt.

Um die Übersicht zu behalten, sollten Sie nie mehr als 5 Ebenen tief verschachteln.

Vermeiden Sie unterschiedliche Datentypen auf beiden Seiten eines Vergleichsoperators.

Bei Dezimalzahlen sollte ein Test auf Gleichheit vermieden werden. Verzichten Sie auf ElseIf-Anweisungen, wenn Sie Select-Case-

Anweisungen nutzen können.

Page 46: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 46Access 2007 – VBA | 25.06.08 | Seite 46

Regionales Rechenzentrum für Niedersachsen

Nutzung bei Optionsgruppen

Die Optionsgruppe (der Rahmen) enthält den Wert der aktiven Option und damit der gesamten Gruppe.

Falls die Option aktiviert wird, wird der Optionswert an die Gruppe übergeben.

K03_conditionLoop.accdb:Formular frmAmpel

Page 47: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 47Access 2007 – VBA | 25.06.08 | Seite 47

Regionales Rechenzentrum für Niedersachsen

Code

' Sobald eine neue Option aktiviert wird,...Private Sub fraAmpel_AfterUpdate()

If fraAmpel.Value = 1 Then rectFarbe.BackColor = RGB(255, 0, 0) ElseIf fraAmpel.Value = 2 Then rectFarbe.BackColor = RGB(0, 255, 0) ElseIf fraAmpel.Value = 3 Then rectFarbe.BackColor = RGB(255, 200, 0) Else rectFarbe.BackColor = RGB(0, 0, 0) End If Me.Refresh ' Form neu zeichnen

End Sub

Page 48: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 48Access 2007 – VBA | 25.06.08 | Seite 48

Regionales Rechenzentrum für Niedersachsen

Select-Case-Anweisung

... sind eine andere Form von ElseIf-Anweisungen. Der Wert einer Variablen wird mit einem numerischen Wert oder einem

String verglichen.

Select Case variableCase konstante

Anweisung Case konstante

AnweisungCase Else

AnweisungEnd Select

Anweisung

Page 49: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 49Access 2007 – VBA | 25.06.08 | Seite 49

Regionales Rechenzentrum für Niedersachsen

Arbeitsweise

Select Case variableCase konstante

Anweisung Case konstante

AnweisungCase Else

AnweisungEnd Select

Anweisung

Selektiere die Variable und vergleiche den Wert der Variablen mit...

Falls einer der Fälle (Case) mit den Wert der zu überprüfenden Variablen übereinstimmt, führe nachfolgende Anweisungen aus.

Falls keiner der Fälle zutrifft, führe den Standardfall aus. Die Beschreibung des Standardfalls ist optional.

Page 50: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 50Access 2007 – VBA | 25.06.08 | Seite 50

Regionales Rechenzentrum für Niedersachsen

Flußdiagramm

var == Wert?

Selektor var

var == Wert? Anweisungen

var == Wert?

Default-Anweisung

Anweisungen

ja

nein

nein

nein

nein

Anweisungen

ja

ja

Page 51: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 51Access 2007 – VBA | 25.06.08 | Seite 51

Regionales Rechenzentrum für Niedersachsen

Struktogramm

Anweisungen zu Fall 1

Default-Anweisungen

. . .

Selektor var

Anweisungen zu Fall 2

Anweisungen zu Fall n

Page 52: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 52Access 2007 – VBA | 25.06.08 | Seite 52

Regionales Rechenzentrum für Niedersachsen

Numerischer Vergleich

Dim wert As Integer

Select Case wertCase 1

Debug.Print "Speichern"

Case 2Debug.Print "Ausdruck"

Case ElseDebug.Print "Falsche Eingabe"

End Select

Der Wert der Variablen wird mit den Zahlen eins und zwei

verglichen. Case Fall ist immer ein

Vergleich auf Gleichheit. Die Variable und die Konstante, mit der verglichen wird, müssen den

gleichen Datentyp besitzen.

Page 53: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 53Access 2007 – VBA | 25.06.08 | Seite 53

Regionales Rechenzentrum für Niedersachsen

Vergleich mit einer Zeichenfolge

Dim produkt As StringDim kategorie As String

Select Case produktCase "Apfel"

kategorie = "Obst"

Case "Weißkohl"kategorie = "Gemüse"

Case Elsekategorie = ""

End Select

Debug.Print kategorie

Der Wert der Variablen wird mit einer Zeichenfolge

verglichen. Falls keiner der Fälle zutrifft,

wird die Variable auf eine leere Zeichenfolge gesetzt.

Page 54: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 54Access 2007 – VBA | 25.06.08 | Seite 54

Regionales Rechenzentrum für Niedersachsen

Listen nutzen

Dim produkt As StringDim kategorie As String

Select Case produktCase "Apfel", "Bananen", "Birnen"

kategorie = "Obst"

Case "Weißkohl", "Bohnen", "Erbsen"kategorie = "Gemüse"

Case Elsekategorie = ""

End Select Die Variable wird mit einer Liste von Zeichenfolgen verglichen. Wenn einer der Werte aus der Liste zutrifft, werden alle zu

dem Fall gehörenden Anweisungen ausgeführt. Mit Hilfe der Liste wird eine

ODER-Verknüpfung realisiert.

Page 55: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 55Access 2007 – VBA | 25.06.08 | Seite 55

Regionales Rechenzentrum für Niedersachsen

Bereiche von Werten nutzen

Dim bestellmenge As IntegerDim rabatt As Single

Select Case bestellmengeCase 1 To 50

rabatt = 0.0

Case 51 To 100rabatt = 0.03

Case ElseDebug.Print "Falsche Bestellmenge"bestellmenge = 0rabatt = 0.0

End Select

Hier wird ein Zahlenraum min TO max genutzt.

Wenn der Variablenwert in diesem Bereich liegt, werden alle

zu dem Fall gehörenden Anweisungen ausgeführt.

Page 56: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 56Access 2007 – VBA | 25.06.08 | Seite 56

Regionales Rechenzentrum für Niedersachsen

Vergleichsoperatoren nutzen

Dim bestellmenge As Integer

Select Case bestellmengeCase Is < 10

Debug.Print "Mindestbestellmenge unterschritten"

Case Is > 100Debug.Print "Lieferung nur gegen Vorkasse"

Case ElseDebug.Print "Bestellung ausführen"

End Select

Für die Variable muss als Platzhalter Is angegeben

werden. Dem Platzhalter folgt ein Vergleichsoperator und der Wert mit dem verglichen wird.

Page 57: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 57Access 2007 – VBA | 25.06.08 | Seite 57

Regionales Rechenzentrum für Niedersachsen

Bedingungen verknüpfen

Dim bestellmenge As IntegerDim rabatt As Dobule

Select Case bestellmengeCase Is >= 50 And (bestellmenge < 100)

rabatt = 0.03

Case Is > 100 And (bestellmenge < 200)rabatt = 0.05

Case Elserabatt = 0.0

End SelectIn dem zu verknüpfenden Ausdruck

muss der Variablennamen wiederholt werden.

Page 58: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 58Access 2007 – VBA | 25.06.08 | Seite 58

Regionales Rechenzentrum für Niedersachsen

Schleifen (Iterationsanweisungen)

... sind Wiederholungen bestimmter Anweisungen. Die Anzahl der Durchläufe wird durch eine Bedingung bestimmt. Falls

diese Bedingung nie wahr wird, wird die Schleife als Endlosschleife bezeichnet.

... können vorzeitig abgebrochen werden. Folgende Schleifen sind in VBA implementiert:

Für eine bestimmte Anzahl von Schleifendurchläufen wird die For-Next-Schleife genutzt. Diese Art von Schleife wird auch als Zählschleife bezeichnet.

Falls die Anzahl der Schleifendurchläufe nicht bekannt ist, können Do-Loop- oder While-Wend-Schleifen genutzt werden. Für den Schleifenabbruch wird eine Bedingung angegeben.

Page 59: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 59Access 2007 – VBA | 25.06.08 | Seite 59

Regionales Rechenzentrum für Niedersachsen

Schleifenkopf, -fuß und -rumpf

Im Schleifenkopf oder -fuß stehen die Bedingungen unter den die Schleifen ausgeführt werden. In einer For-Next-Schleife steht die Bedingung immer im Kopf. Der

Schleifenfuß setzt die Zählvariable entsprechend der angegebenen Schrittweite.

Bei einer Do-Loop-Schleife kann die Bedingung im Schleifenkopf sowohl als auch im Schleifenfuß stehen.

Im Schleifenrumpf stehen die zu einer Schleife gehörenden Anweisungen.

Page 60: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 60Access 2007 – VBA | 25.06.08 | Seite 60

Regionales Rechenzentrum für Niedersachsen

Zählschleife For-Next

Die Zählschleife beginnt mit dem Schlüsselwort For. Durch die Anweisung zaehler = startwert wird die Variable

initialisiert. Die Variable hat einen definierten Anfangswert. Die Zählvariable kann Ganz- oder Dezimalzahlen nutzen.

Die Schleife durchläuft den Zahlenbereich startwert To endwert. Sobald der maximale Wert erreicht ist, bricht die Schleife ab. Minimaler und maximaler Wert entsprechen dem Datentyp der Zählvariablen.

Das Schlüsselwort next setzt zaehler auf den nächsten Wert. Standardmäßig wird der Wert um eins erhöht.

For zaehler = startwert To endwert

Anweisung

Next zaehler

K03_conditionLoop.accdb:Modul conditionLoopProzedur: zaehlen

Page 61: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 61Access 2007 – VBA | 25.06.08 | Seite 61

Regionales Rechenzentrum für Niedersachsen

Schrittweite angeben

Die Schrittweite des Zählers kann mit Hilfe von Ganz- oder Dezimalzahlen angegeben werden.

Standardmäßig wird der Zähler um eins erhöht. Dem Schlüsselwort Step folgt ein Wert.

Wenn der Wert negativ ist, wird der Zähler vermindert. Es wird runtergezählt. Wenn der Wert positiv ist, wird der Zähler erhöht. Es wird hochgezählt.

Falls für den Zähler Dezimalwerte genutzt werden, sollte die Schrittweite in Dezimalwerten angegeben werden. Falls für den Zähler Ganzzahlen genutzt werden, muss auch eine Ganzzahl für die Schrittweite genutzt werden.

For zaehler = startwert To endwert Step schrittweite

Anweisung

Next zaehler

Page 62: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 62Access 2007 – VBA | 25.06.08 | Seite 62

Regionales Rechenzentrum für Niedersachsen

Flussdiagramm und Struktogramm

> maxWert

Initialisiere Zähler

neinja

Flussdiagramm

Struktogramm

Anweisung

Wiederhole solange

Nächster Schritt

Initialisiere Zähler

Anweisung

Zähler + Schrittweite

Page 63: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 63Access 2007 – VBA | 25.06.08 | Seite 63

Regionales Rechenzentrum für Niedersachsen

Beispiele für Ganzzahlen

Dim count As Integer

For count = 0 To 9 Debug.Print countNext count

For count = 9 To 0 Debug.Print countNext count

For count = 9 To 0 Step - 1 Debug.Print countNext count

In dieser Zählschleife wird 0, 1, 2 und so weiter gezählt. Die

Schleife bricht bei einem Wert von 10 ab.

Diese Schleife wird nicht durchlaufen, weil der Startwert

größer als der Endwert ist.

In dieser Zählschleife wird 9, 8, 7 und so weiter gezählt.

Page 64: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 64Access 2007 – VBA | 25.06.08 | Seite 64

Regionales Rechenzentrum für Niedersachsen

Beispiele für Dezimalzahlen

Dim zaehler As Double

For zaehler = 0 To 5.5 Debug.Print countNext count

For zaehler = 0 To 5.5 Step 0.5 Debug.Print countNext count

For zaehler = 9 To 0 Step - 0.5 Debug.Print countNext count

For zaehler = 0.5 To 5.5 Step 2 Debug.Print countNext count

In dieser Zählschleife wird 0, 1, 2 und so weiter gezählt. Die

Schrittweite beträgt eins.

Der Zähler läuft von 0 bis 5.5 in 0.5-Schritten.

Der Zähler läuft von 9 bis 0. Der Zähler wird immer um 0.5

minimiert.

In dieser Zählschleife wird 0, 2, 4 gezählt.

Page 65: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 65Access 2007 – VBA | 25.06.08 | Seite 65

Regionales Rechenzentrum für Niedersachsen

Verschachtelte Schleifen

Dim wert As Integer Dim faktor As Double;Dim ergebnis As Double

For wert = 1 To 5

ergebnis = 0

Debug.Print ergebnis Next wert

For faktor = 0.5 To 2 Step 0.5ergebnis = faktor * wert If (faktor > 1.5) AND (wert = 2) Then

Exit ForEnd If

Next faktor

Äußere Schleife

Innere Schleife

Page 66: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 66Access 2007 – VBA | 25.06.08 | Seite 66

Regionales Rechenzentrum für Niedersachsen

Abbruch einer Schleife

Dim wert As IntegerDim faktor As Double;Dim ergebnis As Double

For wert = 1 To 5 ergebnis = 0

For faktor = 0.5 To 2 Step 0.5ergebnis = faktor * wert If (faktor > 1.5) AND (wert = 2) Then

Exit ForEnd If

Next faktor

Debug.Print ergebnis Next wert

Mit Hilfe von Exit kann eine Schleife abgebrochen werden. Hier wird nur die innere Schleife abgebrochen. Die exit-

Anweisung gehört zu der inneren Schleife und nicht zur äußeren

Schleife.

Page 67: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 67Access 2007 – VBA | 25.06.08 | Seite 67

Regionales Rechenzentrum für Niedersachsen

Do-Loop-Schleifen

Die Schleife beginnt mit Do und endet mit Loop. Momentan würde diese Schleife endlos laufen. Es fehlt eine

Abbruchbedingung.

DoAnweisung

Loop

Page 68: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 68Access 2007 – VBA | 25.06.08 | Seite 68

Regionales Rechenzentrum für Niedersachsen

Fußgesteuerte Do-Loop-Schleifen

Die Abbruchbedingung steht im Fuß der Schleife. Die Schleife wird einmal durchlaufen und dann erst die Bedingung geprüft. Until (bis ):

Die Schleife läuft solange bis die Bedingung erfüllt ist. Sobald die Bedingung erfüllt ist, wird die Schleife abgebrochen.

While (während, so lange): Die Schleife läuft solange wie die Bedingung erfüllt ist. Sobald die Bedingung nicht erfüllt ist, wird die Schleife abgebrochen.

DoAnweisung

Loop Until Bedingung

DoAnweisung

Loop While Bedingung

K03_conditionLoop.accdb:Modul conditionLoopProzedur: fussSchleifen

Page 69: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 69Access 2007 – VBA | 25.06.08 | Seite 69

Regionales Rechenzentrum für Niedersachsen

until

Dim count As Integer

count = 0

Do count = count + 1Debug.Print count

Loop Until count > 5

count +1

wiederhole bis count > 5

Debug.Print

count = 0 + 1count = 1 + 1count = 2 + 1count = 3 + 1count = 4 + 1count = 5 + 1

⇒ Abbruch

Page 70: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 70Access 2007 – VBA | 25.06.08 | Seite 70

Regionales Rechenzentrum für Niedersachsen

while

Dim count As Integer

count = 0

Do count = count + 1Debug.Print count

Loop While count > 5

count +1

wiederhole so lange count > 5

Debug.Print

count = 0 + 1⇒ Abbruch

Page 71: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 71Access 2007 – VBA | 25.06.08 | Seite 71

Regionales Rechenzentrum für Niedersachsen

Kopfgesteuerte Do-Loop-Schleifen

Die Abbruchbedingung steht im Kopf der Schleife. Die Bedingung wird überprüft. Falls die Bedingung zutrifft, werden die

Anweisungen im Schleifenrumpf durchlaufen. Until (bis ):

Die Schleife läuft solange bis die Bedingung erfüllt ist. Sobald die Bedingung erfüllt ist, wird die Schleife abgebrochen.

While (während, so lange): Die Schleife läuft solange wie die Bedingung erfüllt ist. Sobald die Bedingung nicht erfüllt ist, wird die Schleife abgebrochen.

Do Until BedingungAnweisung

Loop

Do While BedingungAnweisung

Loop

K03_conditionLoop.accdb:Modul conditionLoopProzedur: kopfSchleifen

Page 72: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 72Access 2007 – VBA | 25.06.08 | Seite 72

Regionales Rechenzentrum für Niedersachsen

until

Dim count As Integer

count = 0

Do Until count > 5count = count + 1Debug.Print count

Loop

count = 0 + 1count = 1 + 1count = 2 + 1count = 3 + 1count = 4 + 1count = 5 + 1

⇒ Abbruch

count +1

wiederhole bis count > 5

Debug.Print

Page 73: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 73Access 2007 – VBA | 25.06.08 | Seite 73

Regionales Rechenzentrum für Niedersachsen

while

Dim count As Integer

count = 0

Do count = count + 1Debug.Print count

Loop While count > 5

⇒ Abbruch

count +1

wiederhole so lange count > 5

Debug.Print

Page 74: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 74Access 2007 – VBA | 25.06.08 | Seite 74

Regionales Rechenzentrum für Niedersachsen

Schleife abbrechen

Dim wert As IntegerDim faktor As Double;Dim ergebnis As Double

wert = 0Do ergebnis = 0

faktor = 0

Do While faktor < 2.0 ergebnis = ergebnis + (faktor * wert)faktor = faktor + 0.5

If (faktor > 1.5) AND (wert = 2) Then

Exit DoEnd If

Next faktor

Debug.Print ergebnis wert = wert + 1

Loop Until wert > 5

Mit Hilfe von Exit Do wird die innere Schleife abgebrochen.

Die äußere beendet den Schleifendurchlauf und startet

einen neuen.

Page 75: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 75Access 2007 – VBA | 25.06.08 | Seite 75

Regionales Rechenzentrum für Niedersachsen

Fehler (Bug) im Programm

Syntaxfehler entstehen beim Schreiben des Programmcodes. Logische Fehler treten auf, wenn der Entwickler ein Denkfehler bei der

Umsetzung der Aufgabe in ein Programm macht. Das Programm wird fehlerfrei ausgeführt, aber das Ergebnis ist nicht korrekt.

Laufzeitfehler treten während der Ausführung des Programms auf. Zum Beispiel eine CD, von der Daten gelesen werden sollen, wurde nicht in das Laufwerk gelegt.

Page 76: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 76Access 2007 – VBA | 25.06.08 | Seite 76

Regionales Rechenzentrum für Niedersachsen

Syntaxfehler

Die Syntax einer Programmiersprache ist die Gesamtheit der Regeln für die Bildung von Anweisungen aus Operatoren und Operanden sowie die Nutzung von Funktionen.

... verhindern die Kompilierung eines Programms. ... sind zum Beispiel:

Tippfehler bei der Eingabe von Variablennamen oder Schlüsselwörtern. Mischung von numerischen und nicht-numerischen Operatoren. Falsche Parameterübergabe an Funktionen. Syntaxfehler in Schleifen oder bedingten Anweisungen.

Zum Beispiel Do... Loop Bedingung oder If Bedingung Anweisung. ... anzeigen:

Öffnen Sie Extras – Optionen und aktivieren die Registerkarte Allgemein. Falls das Kontrollkästchen Automatische Syntaxüberprüfung aktiv ist, werden Fehler im Code farbig markiert.

Die Anweisung Option Explicit verhindert eine doppelte Vergabe von Bezeichnern oder eine fehlerhafte Eingabe von Variablennamen.

Page 77: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 77Access 2007 – VBA | 25.06.08 | Seite 77

Regionales Rechenzentrum für Niedersachsen

Laufzeitfehler

... sind Bugs, die nach dem Start eines Programms auftreten können. ... betreffen immer die Programmlogik. ... können Programme zu einem unerwünschten Verhalten oder einen

Programmabsturz zwingen. ... entstehen, wenn Ausdrücke oder Anweisungen vom Programm nicht

korrekt ausgewertet werden.

Page 78: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 78Access 2007 – VBA | 25.06.08 | Seite 78

Regionales Rechenzentrum für Niedersachsen

Beispiele für Laufzeitfehler

Division durch Null. Überlauf (zu großer oder zu kleiner Wert für den angegebenen

Datentyp). Falsche Abbruchbedingung für eine Schleife. Verwendung von ungültigen Operatoren. Ein- und Ausgabefehler. Tippfehler wie "1o" statt 10.

Const zahlA = 4Const zahlB = 0Dim ergebnis As Integer

ergebnis = zahlA / zahlB

Page 79: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 79Access 2007 – VBA | 25.06.08 | Seite 79

Regionales Rechenzentrum für Niedersachsen

Informationen zu abfangbaren Laufzeitfehlern

Das Objekt Err bekommt alle Fehler eines VBA-Programms übergeben und kann ausgelesen werden. Err.Number gibt eine Fehlernummer aus. Err.Description gibt einen Fehlertext aus. Err.Helpfile gibt einen Hilfetext zu einem Fehler aus. Err.Clear setzt alle Eigenschaften auf die Standardwerte zurück. Es werden

alle vorhandenen Fehlermeldungen gelöscht.

Page 80: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 80Access 2007 – VBA | 25.06.08 | Seite 80

Regionales Rechenzentrum für Niedersachsen

Laufzeitfehler abfangen

Die Anweisung On Error regelt das Verhalten des Programms bei einem Laufzeitfehler.

On Error Resume 0 oder On Error Resume wiederholt die fehlerbehaftete Zeile.

On Error Resume Next überspringt die fehlerbehaftete Zeile und arbeitet mit der nächsten Programmzeile weiter. Nachteil: Fehlerbehaftete Variablen werden weiter durch das Programm geschleppt.

On Error Goto <marke> springt, sobald ein Fehler auftritt, zu einer bestimmten Position im Programm. An dieser Position wird der Fehler behandelt.

On Error Goto 0 deaktiviert alle selbst definierten Fehlerbehandlungsroutinen. Es werden die Standard-Fehlerdialoge der Access-Datenbank genutzt.

Page 81: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 81Access 2007 – VBA | 25.06.08 | Seite 81

Regionales Rechenzentrum für Niedersachsen

Beispiel: On Error Resume Next

On Error Resume Nextergebnis = divident / divisorIf Err.Number = 11 Then

count = 1End If

Page 82: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 82Access 2007 – VBA | 25.06.08 | Seite 82

Regionales Rechenzentrum für Niedersachsen

Resume-Anweisungen

Die Anweisung Resume führt nochmals die Zeile aus, die den Code verursacht hat. Der Fehler muss vor Ausführung dieser Zeile gelöst sein. Andernfalls durchläuft das Programm eine Endlosschleife.

Resume Next führt das Programm in der nachfolgenden Zeile aus. Die Zeile, die den Fehler verursacht hat, wird übersprungen. Wenn der Fehler nicht behoben wurde, werden eventuell fehlerbehaftete Variablenwerte weiter genutzt.

Mit Hilfe von Resume <marke> kann zu einem bestimmten Codeblock in dem Programm gesprungen werden.

Page 83: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 83Access 2007 – VBA | 25.06.08 | Seite 83

Regionales Rechenzentrum für Niedersachsen

Beispiel: On Error Goto <marke>

Const zahlA = 4Const zahlB = 0Dim ergebnis As Integer

Err.Clear

On Error Goto FEHLER

ergebnis = divident / divisor

Exit Sub 'Prozedur beenden

'Definition der SprungmarkeFEHLER:

MsgBox(Err.Description)divisor = 1Resume

Page 84: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 84Access 2007 – VBA | 25.06.08 | Seite 84

Regionales Rechenzentrum für Niedersachsen

Sprungmarken

... werden folgendermaßen definiert: name: Jede Sprungmarke hat einen eindeutigen Namen. ... sind nur Lesezeichen im Code. ... sind keine Stoppzeichen beim Durchlaufen eines Programms.

Falls kein Fehler vorhanden ist, werden die Anweisungen, die zur Sprungmarke hören, durchlaufen.

Mit Hilfe von Exit Sub wird die Prozedur vor der Sprungmarke abgebrochen.

Page 85: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 85Access 2007 – VBA | 25.06.08 | Seite 85

Regionales Rechenzentrum für Niedersachsen

Logische Fehler

... entstehen ... beim Design eines Programms oder ... bei der Definition von Anforderungen an das Programm.

... können ... durch fehlendes Fachwissen oder ... Missverständnissen zwischen Nutzern und Entwicklern entstehen.

... können durch ein zeilenweises Durchlaufen des Programms abgefangen werden. Sehr zeitaufwendig. VBA bietet die Möglichkeit ... das Programm im Einzelschrittmodus zu durchlaufen. ... Zwischenergebnisse in das Direktfenster zu drucken. ... Variablen zu überwachen.

Page 86: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 86Access 2007 – VBA | 25.06.08 | Seite 86

Regionales Rechenzentrum für Niedersachsen

... werden hervorgerufen durch

... eine falsche Anzahl von Schleifendurchläufen. ... durch das Erzeugen von Endlosschleifen. ... falsch formulierte Bedingungen in Anweisungen und Schleifen. ... eine falsche oder nicht vorhandene Klammerung von komplexen

Ausdrücken. ... falsch initialisierte Variablen.

Page 87: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 87Access 2007 – VBA | 25.06.08 | Seite 87

Regionales Rechenzentrum für Niedersachsen

Einzelschrittmodus

Das Programm wird Zeile für Zeile durchlaufen.

Die momentan auszuführende Zeile wird farbig unterlegt und mit einem Pfeil am Rand gekennzeichnet.

Legen Sie den Mauszeiger auf einen Bezeichner oder Ausdruck. Der aktuelle Wert wird in einem gelben Erklärfenster angezeigt.

Page 88: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 88Access 2007 – VBA | 25.06.08 | Seite 88

Regionales Rechenzentrum für Niedersachsen

Einzelschrittmodus starten

Debuggen – Einzelschritt oder <F8> im VBA-Editor. Jede Zeile muss mit der Taste <F8> quittiert werden. Der Pfeil, der die momentan auszuführende Zeile am Rand anzeigt, kann

mit Hilfe der Maus auf andere Codezeilen verschoben werden. Der Code wird dort fortgesetzt.

Page 89: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 89Access 2007 – VBA | 25.06.08 | Seite 89

Regionales Rechenzentrum für Niedersachsen

Haltepunkte

Eine Programmzeile mit einem Haltepunkt wird braun hinterlegt und mit einem braunen Punkt am linken Rand gekennzeichnet.

... setzen: Der Mauszeiger wird in die Zeile gesetzt, in

der das Programm gestoppt werden soll. Auf Deklarationsanweisungen, leeren Zeilen, Sprunganweisungen oder Kommentaren kann kein Haltepunkt gesetzt werden!

Debuggen – Haltepunkt ein / aus oder <F9> im VBA-Editor.

... entfernen: Der Mauszeiger wird in eine Zeile mit

Haltepunkt gesetzt. Debuggen – Haltepunkt ein / aus oder <F9> im VBA-Editor auswählen.

Debuggen – Alle Haltepunkt löschen oder <Strg+Umschalt F9> im VBA-Editor.

Page 90: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 90Access 2007 – VBA | 25.06.08 | Seite 90

Regionales Rechenzentrum für Niedersachsen

Arbeiten mit Haltepunkten

Das Programm wird mit Ausführen – Sub / Userform ausführen (<F5>) gestartet.

Das Programm unterbricht automatisch an der ersten Zeile mit einem Haltepunkt.

Anschließend kann das Programm wieder ... mit Ausführen – Sub / Userform ausführen (<F5>) bis zum Ende

abgearbeitet werden. ... mit Debuggen – Einzelschritt (<F8>) durchlaufen werden.

Page 91: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 91Access 2007 – VBA | 25.06.08 | Seite 91

Regionales Rechenzentrum für Niedersachsen

Aktuelle Variablenwerte anzeigen

Voraussetzung: Das Programm wird im Einzelschrittmodus durchlaufen.

Markieren Sie die gewünschte Variable mit Hilfe der Maus. Klicken Sie auf Debuggen – Aktueller Wert anzeigen oder

<UMSCHALT>+<F9>. Es öffnet sich folgendes Dialogfenster:

Page 92: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 92Access 2007 – VBA | 25.06.08 | Seite 92

Regionales Rechenzentrum für Niedersachsen

Informationen im Dialogfenster

In welcher Prozedur oder Modul kommt die Variable vor? Wo befindet sich die Variable?

Die Variable wird dem Überwachungsfenster hinzugefügt.

Welchen Wert hat die Variable aktuell gespeichert?

Welche Variable wird überprüft?

Page 93: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 93Access 2007 – VBA | 25.06.08 | Seite 93

Regionales Rechenzentrum für Niedersachsen

Überwachungsfenster

... wird mit Hilfe von Ansicht – Überwachungsfenster oder automatisch beim Hinzufügen einer Variablen geöffnet.

Pro Zeile wird ein Ausdruck, eine Variable oder eine Funktion angezeigt.

Page 94: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 94Access 2007 – VBA | 25.06.08 | Seite 94

Regionales Rechenzentrum für Niedersachsen

Aufbau

Bezeichnung der Variablen, Funktion oder Ausdruck.

Aktueller Wert des Ausdrucks.Rückgabewert der Funktion.

Datentyp des Ausdrucks.

Modul.Prozedur. Wo befindet sich der zu überwachende Ausdruck?

Page 95: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 95Access 2007 – VBA | 25.06.08 | Seite 95

Regionales Rechenzentrum für Niedersachsen

Ausdruck

Markieren Sie den zu überwachenden Ausdruck im Codefenster. ... dem Überwachungsfenster hinzufügen.

Voraussetzung: Das Überwachungsfenster ist geöffnet. Der markierte Ausdruck wird mit Hilfe der linken Maustaste in das Überwachungsfenster gezogen.

Öffnen Sie mit der rechten Maustaste das Kontextmenü der Variablen und wählen den Eintrag Überwachung hinzufügen aus. Es öffnet sich das dazugehörige Dialogfenster.

Page 96: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 96Access 2007 – VBA | 25.06.08 | Seite 96

Regionales Rechenzentrum für Niedersachsen

Überwachung hinzufügen

Folgende Optionen sind möglich: Überwachungsausdruck: Der Wert der

Variablen wird im Überwachungsfenster während des Durchlaufs angezeigt.

Unterbrechen, wenn der Wert True ist: Der Durchlauf wird unterbrochen, sobald die Variable den Wert True besitzt oder einen Wert ungleich null. Diese Option kann nicht für Strings genutzt werden.

Unterbrechen, wenn der Wert sich geändert hat: Der Durchlauf wird unterbrochen, sobald sich der Wert der Variablen verändert.

Page 97: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 97Access 2007 – VBA | 25.06.08 | Seite 97

Regionales Rechenzentrum für Niedersachsen

Kennzeichnung im Überwachungsfenster

Das Programm wird unterbrochen, wenn der Wert sich ändert.

Es wird der Wert der Variablen im Überwachungsfenster angezeigt.

Das Programm wird unterbrochen, wenn der Wert der Variablen true ist.

Page 98: VBA (Visual Basic for Application) - luis.uni-hannover.de · Beschreibung eines Schemas, welches unter Verwendung von endlich vielen Arbeitsschritten ein bestimmtes Problem löst.

OpenOffice | 12.08.08 | Folie 98Access 2007 – VBA | 25.06.08 | Seite 98

Regionales Rechenzentrum für Niedersachsen

Mit dem Überwachungsfenster arbeiten

Klicken Sie auf das Icon am linken Rand, um die Zeile vollständig zu markieren. Mit Hilfe von <ENTF> wird der Ausdruck aus dem Überwachungsfenster

entfernt. Mit Hilfe der rechten Maustaste wird das dazugehörige Kontextmenü geöffnet.

Mit Hilfe von Überwachung bearbeiten kann die Art der Überwachung verändert werden.

Klicken Sie in die Spalte Wert einer Zeile. Markieren Sie den Wert. Geben Sie einen neuen mit Hilfe der Tastatur ein. Bestätigen Sie die Angaben mit <RETURN>.

Klicken Sie in die Spalte Ausdruck einer Zeile. Markieren Sie die Bezeichnung und geben Sie eine neue mit Hilfe der Tastatur ein. Bestätigen Sie die Angaben mit <RETURN>. Falls der eingegebene Ausdruck nicht in dem angegebenen Kontext existiert, wird eine Fehlermeldung angezeigt.