3

Click here to load reader

Fehlerarten in VBA - Klassenwikiklassenwiki.berufskolleg-neuss.de/uploads/VBAFoBi/...Fehlersuche.pdf · konstruktives Arbeiten mit Fehlern VBA/Excel Informationsblatt 01 Fehlerarten

Embed Size (px)

Citation preview

Page 1: Fehlerarten in VBA - Klassenwikiklassenwiki.berufskolleg-neuss.de/uploads/VBAFoBi/...Fehlersuche.pdf · konstruktives Arbeiten mit Fehlern VBA/Excel Informationsblatt 01 Fehlerarten

konstruktives Arbeiten mit Fehlern VBA/Excel

Informationsblatt 01

Fehlerarten in VBA Fehler tauchen relativ häufig bei der Programmierung auf und können eine echte Hilfe zur Ver-feinerung des Codes sein, wenn man weiß, wie man damit umzugehen hat…

� Syntaxfehler entsehen, wenn die vorgegebene Schreibweise des VBA-Codes nicht ein-gehalten wird und das Programm Ihren Code nicht lesen kann. Beispiele: Bei Text Anfüh-rungszeichen vergessen, in If-Then-Else-Schleife das Then vergessen usw.

� Laufzeitfehler entstehen, wenn im Programmablauf ein unvorhergesehenes Ereignis auf-taucht, mit dem das Programm nichts anfangen kann. Beispiele: Eine Datei soll geöffnet werden, die nicht existiert oder ein Wert besitzt nicht den passenden Datentyp usw.

� Logische Fehler werden vom Programm nicht angezeigt und werden oft erst dann ent-deckt, wenn das Programm falsche Ergebnisse liefert. Beispiel: Variablen erhalten falsche Anfangswerte oder eine Schleife läuft einmal zu viel bzw. zu wenig usw.

Fehler suchen Hierzu stellt der VBA-Editor 3 Möglichkeiten zur Verfügung:

1. Testen eines Codes im Einzelschrittmodus

2. Unterbrechung des Codes an bestimmten Haltepunkten

3. Überwachung von Variablen

zu 1. Testen eines Codes im Einzelschrittmodus Wenn Sie den Debugger gestartet haben, müssen Sie

den Cursor in die Prozedurzeile setzten, die Sie

schrittweise testen möchten.

Danach rufen Sie den Menüpunkt „Debuggen –

Einzelschritt“ auf oder drücken die Taste F8.

Die Anweisung, die als nächstes ausgeführt wird, ist

gelb hinterlegt. Durch Verschieben des kleinen Pfeils nach oben und unten können Sie andere Co-

dezeilen markieren.

Die Werte, mit denen der Code gerade rechnet,

werden angezeigt, wenn man mit der Maus über

die Variablen fährt (Quickinfo).

Durch STRG F8 kann der Code nun bis zur Cursorposition oder durch F5 bzw. bis zum Ende

ausgeführt werden.

Page 2: Fehlerarten in VBA - Klassenwikiklassenwiki.berufskolleg-neuss.de/uploads/VBAFoBi/...Fehlersuche.pdf · konstruktives Arbeiten mit Fehlern VBA/Excel Informationsblatt 01 Fehlerarten

konstruktives Arbeiten mit Fehlern VBA/Excel

Informationsblatt 01

zu 2. Unterbrechung des Codes an bestimmten Haltepunkten Durch Klicken auf den linken grauen Rand oder durch

F9 kann man Haltepunkte einfügen, an denen der

Code gestoppt wird. Die Zeile erscheint rot.

Sie können beliebig viele Haltepunkte setzten, allerdings werden sie nicht gespeichert.

Sie können diese Haltepunkte durch erneutes Klicken bzw. F9 wieder löschen.

zu 3. Überwachung von Variablen Die unmittelbarste Möglichkeit zur Fehlerüberwachung wurde bereits unter 1. gezeigt: Die Quickin-fo im Einzelschrittmodus. Zur systematischen Fehlersuche gibt es noch mehrere andere Möglich-keiten, von denen 2 erwähnt werden sollen:

Das Lokalfenster wird unter „Ansicht – Lokalfenster“ geöffnet und zeigt die Namen, aktuellen Werte und Eigenschaften aller Variablen Objektvariablen.

Im Einzelschrittmodus kann man beobachten, wie sich die Werte ändern.

Das Überwachungsfenster wird unter „Ansicht – Überwachungsfenster“ geöffnet. Es zeigt aller-dings nur die Variablen an, die mithilfe von „Debuggen – Überwachung hinzufügen“ (bzw. rechte Maustaste auf den Wert) vorher ein-getragen wurden.

Page 3: Fehlerarten in VBA - Klassenwikiklassenwiki.berufskolleg-neuss.de/uploads/VBAFoBi/...Fehlersuche.pdf · konstruktives Arbeiten mit Fehlern VBA/Excel Informationsblatt 01 Fehlerarten

konstruktives Arbeiten mit Fehlern VBA/Excel

Arbeitsblatt 01

Laufzeitfehler abfangen Fehler können auch beabsichtigt auftauchen und man kann gezielt damit arbeiten. Die Anweisung Exit Sub haben wir bereits kennen gelernt. Es ist jedoch nicht nö-tig, einen Code bei einem Fehler abzubrechen, denn mit Hilfe der On Error GoTo Anweisung kann man festlegen, an welcher Stel-le der Code bei einem Fehler fortgesetzt werden soll.

Mit der Resume Anweisung haben Sie eine weitere Möglichkeit, die Fortsetzung des Codes zu be-einflussen. Ohne weitere An-weisungen wird der Code an der Stelle fortgesetzt an der der Fehler auftrat. Es gibt je-doch auch die Ausprägungen Resume Next (in einer Schleife) und Resume Sprungmarke. (Eine Sprungmarke kann er-

zeugt werden, indem man ihren Namen schreibt, gefolgt von einem Doppelpunkt.)

Aufgaben

1. Berechnungen für Rechtecke Öffnen Sie die Datei Rechtecke.xls.

a. Erstellen Sie eine Prozedur, die der Arbeitsmappe ein neues Tabellenblatt mit dem Namen Berechnung hinzufügt (Methode Add im Objekt Sheets, Eigenschaft Name).

b. Darin ist eine Tabelle wie in der Vorlage anzulegen: In den ersten beiden Spalten werden Länge und Breite eines Rechtecks eingegeben, der Rest soll errechnet wer-den.

c. Zunächst sind die Überschrift und die Beschriftung der Kopfzeile der Tabelle in das Arbeitsblatt zu schreiben. Ändern Sie die Größe der Schrift und die Spaltenbreite jeweils auf den Wert 20.

d. In einer Schleife soll der Benutzer die Werte der ersten beiden Spalten über eine Inputbox eingeben, danach sollen die Berechnungen erfolgen.

e. Erfragen Sie am Ende der Schleife, ob eine weitere Berechung durchzuführen ist.

� Testen Sie ihre Prozedur im Einzelschrittmodus.

� Verfolgen Sie die Variableninhalte in der Quickinfo.

� Verfolgen Sie die Laenge und Breite im Überwachungsfenster.

� Nutzen Sie das Lokalfenster zur Information über die anderen Variablen.

2. Fehlermeldung und erneute Eingabemöglichkeit Erweitern Sie die Prozedur aus 1. so, dass Laufzeitfehler aufgefangen werden, wenn der Be-nutzer z.B. falsche Werte eingibt. Bei einer falschen Eingabe soll der Benutzer die Werte neu eingeben können.

On Error GoTo Sprungmarke … Sprungmarke: …

Dim x As Integer On Error GoTo Fehler x = InputBox("Bitte geben Sie eine Zahl ein") … Fehler: MsgBox "Sie haben keine Zahl eingegeben", vbCritical, "Eingabefehler" Resume End Sub