Laufzeitfehler und Debuggen

Kein schönes Thema, aber leider doch notwendig. Denn wenn ein Laufzeitfehler auftritt weiß man, da ist was falsch. Und es beginnt die Fehlersuche.

Doch erstmal von vorn. Wenn Sie in einem Modul Code schreiben, wird bereits beim Schreiben geprüft, ob die Code-Syntax richtig ist. Allerdings erst dann, wenn Sie die Zeile wechseln.

Wie die Syntax überprüft werden soll, können Sie in den Optionen des VBA-Editors einstellen:

Optionen

Hier ist alles aktiviert. Wenn Sie erst mit Makros anfangen sollten Sie es einfach mal ausprobieren.

Aber leider gibt es Fehler, die man erst zur Laufzeit bzw. beim Kompilieren des Codes merkt. Wollen Sie Ihren Code vollständig überprüfen und entsprechend die Datei weitergeben, sollten Sie das Projekt kompilieren. Das geht über das Menü Debuggen im VBA Editor. Dort finden Sie als ersten Unterpunkt Kompilieren von xxxxx (je nachdem, was Sie im Projekt-Explorer aktiviert haben). Durch das Kompilieren ändert sich ggf. die Dateigröße Ihrer Dokumentvorlage oder Ihres Dokuments, denn der kompilierte Code wird Bestandteil Ihres Dokuments. Der Größenunterschied sollte aber auch bei größeren Projekten nicht außerordentlich hoch sein. 

Beim Kompilieren wird der gesamte Code im Projekt geprüft. Da werden dann auch ggf. Codeteile geprüft, die Sie nicht im Projekt verwenden, die Sie bei Fehlern auskommentieren müssen. 

Trotzdem kann es vorkommen, dass Fehler erst zur Laufzeit auftreten. Es können Variablen nicht die erwarteten Werte haben, Objekte wurden nicht richtig zugewiesen, die Lebensdauer von Variablen nicht beachtet. 

Der Code wird dann unterbrochen und Sie werden gefragt, ob die Debuggen wollen. Wenn Sie bejahen, wird der VBA Editor geöffnet und die Zeile mit dem Fehler gelb markiert. Der Code befindet sich aber noch in der Laufzeit, was bedeutet, daß Sie den Inhalt von Variablen prüfen können, wenn Sie mit der Maus über den Namen der Variablen fahren.

Laufzeitfehler

 

Der VBA Editor bietet Ihnen beim Auslösen des Fehlers eine Fehlernummer an. In der Hilfe können Sie ggf. nachlesen, was dieser Fehler bedeutet. Aber leider ist die Fehlernummer selten sehr aussagekräftig.

Wenn Sie ein Projekt weitergegeben haben ist es natürlich sehr lästig, wenn jemand plötzlich im VBA Editor steht und nicht weiß, was der Code bedeuten soll. Daher sollten Sie immer Fehlerroutinen in Ihre Projekte einbauen. 

Dazu steht Ihnen das Err-Objekt zur Verfügung. Dieses zeigt Ihnen alle auffangbaren Fehler mit der Fehlernummer und einer Fehlerbeschreibung an. Zusätzlich können Sie mit dem Befehl On Error Aktionen ausführen wie den Code abbrechen oder einzelne Zeilen überspringen, die den Fehler auslösen.

So könnte ein Beispiel aussehen:

               
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Fehlertest() 

    Dim MyFehler As ErrObject 
     
    Dim MyNr As Long 
     
     'ab jetzt werden die Zeilen mit Fehlern übergangen
    On Error Resume Next 
     
     'Diese Zeile löst ein Fehler aus
     'Wissen Sie welchen????? Wenn nein - prüfen Sie es mal nach...
    MyNr = "eins" 
     
     'die Nummer wird angezeigt
    MsgBox MyNr 
     
     'das "On Error Resume Next" wird hier wieder ausgeschaltet
    On Error GoTo 0 
     
    On Error GoTo Ende 
         
    Exit Sub     'wichtige Zeile!
     
Ende: 
    MsgBox "Es ist folgender Fehler aufgetreten: " & err.Number 
    Resume Next 
     
End Sub 

 

In Zeile 8 wird die Fehlerbehandlung festgelegt. Sollte in einer Zeile ein Fehler auftreten, wird diese Zeile ignoriert und der Code weiter ausgeführt. Aber Achtung: Es könnten Folgefehler auftreten und der gesamte Code wird dadurch nicht mehr richtig ausgeführt. Daher genau prüfen, ob die Funktion sinnvoll ist. Außerdem wirkt diese Fehlerbehandlung ggf. auch in Funktionen und anderen Prozeduren weiter, was nicht immer erwünscht ist. Dazu müssen Sie die Zeile 18 benutzen. Hier wird die Fehlerbehandlung praktisch wieder ausgeschaltet.

In Zeile 20 finden Sie eine weitere Möglichkeit der Fehlerbehandlung. Zum Testen müssen Sie die Zeile 8 durch diese Zeile ersetzen. Dann wird die Fehlernummer angezeigt und der Code läuft nach der Bestätigung einfach weiter. Dieser Effekt wird durch die Zeile 26 erzeugt. Ganz wichtig ist die Zeile 22, wenn Sei ein Goto mit der Sprungmarke Ende (kann natürlich auch anders heißen) benutzen. Ohne diese Zeile würde der Code diesen Teil (ab Zeile 34) abarbeiten, auch wenn kein Fehler auftritt. Also unbedingt das Exit nicht vergessen, welches natürlich auch bei Funktionen eingesetzt werden kann: Exit Function.

 



Diese Seite zu Mister Wong hinzufügen
Diese Seite zu ecure.del.icio.us hinzufügen
Diese Seite zu webnews hinzufügen
Diese Seite zu Google Bookmarks hinzufügen
Diese Seite zu linkarena hinzufügen
Diese Seite zu Yahoo hinzufügen










Für weitere Infos bitte auf den Text klicken

http://www.prawi-officewelt.de
 .::. nach oben .::.
 
 
©2008 - 2019 www.VBA-Wordwelt.de - alle Rechte vorbehalten
 
Kontakt | Impressum
los Suche

Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen


Annehmen