Service: Excel-VBA: Suche nach Fehlern in Code (Debuggen)

Die VBA-Entwicklungsumgebung (VBA-IDE) ist extrem benutzerfreundlich und bietet hervorragende Möglichkeiten zur Fehlersuche. Nehmen wir z.B. folgenden Code:

Public Sub Test()

    Dim i As Integer
    i = 120000

End Sub
    

Der Code ist offensichtlich fehlerhaft, weil versucht wird, einer Variablen vom Typ Integer einen Wert grösser als 32767 zuzuweisen.

Das Tolle an der VBA-IDE ist, dass die Code-Ausführung sofort abgebrochen wird und eine Fehlermeldung angezeigt wird, wenn VBA auf eine fehlerhafte Anweisung trifft.

Obwohl Programmieranfänger solche Meldungen naturgemäss irritierend finden, muss man klar sagen, dass diese für die Fehlersuche und Fehlerbeseitigung extrem hilfreich sind.

Nicht nur, dass die Codeausführung genau an der fehlerhaften Stelle angehalten wird, es wird ausserdem eine recht konkrete Fehlerbeschreibung ausgegeben und ein direkter Zugang zur Online-Hilfe (per Hilfe-Schaltfläche) ermöglicht.

Einschränkend muss man allerdings sagen, dass die Fehlerbeschreibungen im Meldungsfenster und (überwiegend) auch in der Online-Hilfe, besonders für einen Programmieranfänger, etwas dürftig sind. Trotzdem: Verglichen mit machn anderen Programmiersprachen, hat VBA hier eine hervorragende Unterstützung zu bieten.


Das obenstehende Beispiel ist natürlich etwas banal und die Fehlerursache ist auch ohne IDE-Unterstützung relativ leicht zu erkennen. Etwas anders sieht es in folgendem Beispiel aus:

Public Sub Test()

    Dim i As Integer
    Dim cl As Range
    For Each cl In Selection
        i = i + cl.Value
    Next

    MsgBox "Summe: " & i

End Sub

Der Programmierer ist davon ausgegangen, dass in den ausgewählten Zellen immer irgendwelche 'kleinen' ganzzahligen Werte stehen. Solange das der Fall ist wird der Code auch funktionieren.

Allerdings können in den Zellen X-beliebige Werte stehen (Texte, Fließkommazahlen, 'große' Ganzzahlen oder auch gar nichts). Der Code ist also extrem fehleranfällig und früher oder später wird der VBA-IDE-Debugger 'zuschlagen' und den Code bei 'i = i + cl.Value' mit einer Fehlermeldung anhalten.

In diesem Falle kann der nächste Debug-Mechanismus der VBA-IDE helfen: Das Überwachungsfenster.

Markiert man, 'cl' im Code-Fenster und wählt den Befehl 'Überwachung hinzufügen' aus dem Menü 'Debuggen', sieht man unter anderem folgendes:

Die Value-Eigenschaft der Zelle ('cl'-Objekt) hat den Wert 'Leer' (und 'Leer' kann einer Integer- Variablen nicht zugewiesen werden).

Darüberhinaus hat man einen vollständigen Zugriff auf alle Eigenschaften der Zelle.

Das funktioniert genauso mit allen anderen Variablen in jedem VBA-Code. Z.B. könnte man auf die gleiche Art das 'Selection'-Objekt untersuchen.



Ergebnis: vollständig vordefinierte Routine mit Fehlerbehandlung Interessant für Sie:

VBA-Extentions-Tools

Produktivität in VBA steigern
Routinearbeiten in VBA vereinfachen



Seitenanfang

Kontaktaufnahme- und Terminvereinbarung:

Bei Fragen und für Terminvereinbarungen erreichen Sie uns unter:

0 63 49 99 07 38

0 151 51 95 34 00

Oder nutzen Sie das Kontaktformular




Ihr Ansprechpartner:


Hier sollte das Fahnungsfoto zu sehen sein.

Ralf Kunsmann

Spezialist für VBA-Programmierung
(alle Office-Anwendungen)
Entwickler der
VBA-Extension-Tools