Excel VBA Fehler im Programm

Ähnliche Dokumente
Algorithmen und ihre Programmierung

C# - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

VBA (Visual Basic for Application) Bedingte Anweisungen und Schleifen

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

übersehen. ohne dass eine Datenbank als CurrentDb Solcher Code ist trotz seiner Kürze schwierig zu testen, weil Sie dafür laufend ein AddIn

Access 2010 Programmierung Schleifen

Visual Basic Editor CATIA V5

VB.NET Anweisungen in Abhängigkeit von Kriterien ausführen Schleifen zur Wiederholung von Anweisungen Arrays zur Speicherung von vielen Elementen

1 Visual-LISP Editor ab AutoCAD 2000

White Paper Wählen-Buttons in Excel

Vorwort...10 Einleitung...12 Lernen Üben Anwenden...12 Inhalt und Aufbau des Buches...13 Inhalt...13 Aufbau Access 2007 (fast) alles ist

Excel VBA Arrays, Enumeration und benutzerdefinierte Typen

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

1.) Behandlung von Laufzeitfehlern in Visual Basic

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

15 Fehler finden und behandeln

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

INFORMATIK TEIL: VBA. Infromatik WS 17/18 Teil: VBA. Allgemeines: - 4 Übungen á 3 Stunden

Visual Basic Express Fehlerermittlung

Microsoft Access Arbeiten mit Tabellen. Anja Aue

Makro + VBA 2007 effektiv

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Kennen, können, beherrschen lernen was gebraucht wird

4.1 Aufbau und Eingabe von Formeln

5 Tabellenanpassung. 5.1 Spaltenbreite und Zeilenhöhe Spaltenbreite verändern

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Algorithmen und ihre Programmierung -Teil 2-

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Einführung in die Programmsprache Python - Bedingte Anweisungen und Schleifen -

Access 2000 Programmierung

Access [basics] Fehlerbehandlung unter VBA. Wozu eine Fehlerbehandlung? Fehlerbehandlung von Laufzeitfehler. Tritt ein Fehler ohne Fehlerbehandlung

Java - Fehler im Code. Leibniz Universität IT Services Anja Aue

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

VBA- Programmierung. Integrierte Lösungen mit Office Ricardo Hernández García. 1. Ausgabe, November 2013

Java Anweisungen und Ablaufsteuerung

1 Datenübernahme ohne VBA Grundlagen der VBA Programmierung Inhalt

Algorithmen und ihre Programmierung

OLConnector Programmierung

4 Schleifen -= Entstanden unter Excel 2003 =-

Arbeiten mit Acrobat. Vorstellung von Adobe Acrobat Bearbeitung des Dokuments Präsentationen erstellen Teamarbeit

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

KOPF- UND FUßZEILEN KOPF- UND FUßZEILEN HINZUFÜGEN

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Im Original veränderbare Word-Dateien

Fehler finden und beheben

Inhalt. Dokument Beschreibung. Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Visual Basic Express PST_Bearbeitung_Dialog

Datenverarbeitung Excel-VBA Übersicht HT 2013

SciCa - Scientific Calculator

Microsoft Access 2010 Bilder

Modul 122 VBA Scribt.docx

Kennen, können, beherrschen lernen was gebraucht wird

Anleitung zum Download der EBMG_Datei_9_2.xls

Inhaltsverzeichnis Namen vergeben Richtlinien für Namen Zellen und Zellbereiche benennen Einen Namen automatisch vergeben...

Beschreibung: Erforderliches Programm: Excel (97)2000 bis 2007

SERIENBRIEFE DAS PRINZIP DES SERIENDRUCKS

Ein erstes "Hello world!" Programm

2.3.2 Fenster verschieben Fenster überlappen

Beck EDV-Berater VBA. Visual Basic for Applications Programmieren unter Office XP. 2., neu bearbeitete Auflage

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Access [basics] Debugging im VBA-Editor, Teil 1. Was ist Debugging? Debugging im Fehlerfall. VBA-Grundlagen Debugging im VBA-Editor

Arbeiten mit Suchergebnissen

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Einführung in die Programmierung mit VBA

Kontrollstrukturen und Logik

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Schleifen: Immer wieder dasselbe tun

Tabellen. Inhaltsverzeichnis. Tabellen einfügen

Wenn ein Fehler in Ihrer Prozedur ist, wird entweder gar nicht erst gestartet oder es wird mittendrin abgebrochen.

Kennen, können, beherrschen lernen was gebraucht wird

Variablen und Konstanten

Bedingte Anweisungen

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA CustomViews in VBA nutzen HARALD NAHRSTEDT. Erstellt am

3 VOREINSTELLUNGEN ANPASSEN

Das Kapitel im Überblick

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Microsoft Access Relationen. Anja Aue

Xpert - Europäischer ComputerPass. Peter Wies. Tabellenkalkulation (mit Excel 2010) 1. Ausgabe, 5. Aktualisierung, Juli 2013

Access 2010 Programmierung Import und Export nach Excel

Schleifen in C/C++/Java

Tutorium für Fortgeschrittene

ECDL Information und Kommunikation Kapitel 7

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Richtig einsteigen: Access 2013 VBA-Programmierung

Einführung in die Programmierung für NF. Übung

Kennen, können, beherrschen lernen was gebraucht wird

Arithmetik in der tcsh

Unterlagen. CPP-Uebungen-08/

Kapitel 3 Datentypen, Variablen und Konstanten

Excel Tipps & Tricks Umgang mit umfangreichen Tabellen

Transkript:

Excel VBA Fehler im Programm

Fehler (Bugs) Syntaxfehler entstehen beim Schreiben des Programmcodes. Logische Fehler können durch Denkfehler bei der Umsetzung der Aufgabe in ein Programm erzeugt werden. 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, befindet sich nicht im Laufwerk. Excel Makros und VBA, 01.04.09 Seite 2

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. Excel Makros und VBA, 01.04.09 Seite 3

Syntaxfehler vermeiden Öffnen Sie das Menü Extras Optionen. Aktivieren Sie die Registerkarte Allgemein. Mit Hilfe der Option Automatische Syntaxüberprüfung werden Fehler im Codefenster markiert. Die Anweisung Option Explicit wird automatisch mit Hilfe der Option Variablendeklaration erforderlich an den Anfang eines neuen Moduls eingefügt. Variablen müssen deklariert werden. Es werden keine Variablennamen doppelt besetzt. Excel Makros und VBA, 01.04.09 Seite 4

Syntaxfehler im Codefenster Die fehlerbehaftete Zeile wird farbig hinterlegt. In einem Dialogfenster wird der Fehler mehr oder weniger verständlich erläutert. Die Schaltfläche Hilfe ruft eine Hilfeseite auf. Die Schaltfläche OK schließt das Dialogfenster. Excel Makros und VBA, 01.04.09 Seite 5

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 einem Programmabsturz zwingen.... entstehen, wenn Ausdrücke oder Anweisungen vom Programm nicht korrekt ausgewertet werden. Excel Makros und VBA, 01.04.09 Seite 6

Beispiele 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. Excel Makros und VBA, 01.04.09 Seite 7

Laufzeitfehler abfangen Sub Fehler() Dim ergebnis As Integer On Error GoTo ausgabefehler ergebnis = 5 \ 0 Exit Sub ausgabefehler: MsgBox Err.Description End Sub Excel Makros und VBA, 01.04.09 Seite 8

Regeln für die Fehlerbehandlung On Error... Wie reagiert das Programm auf einen Fehler? On Error GoTo [marke] springt zu einer bestimmten Position im Programm. Ab dieser Position beginnt die Fehlerbehandlungsroutine. On Error Resume Next überspringt den Fehler. Das Programm arbeitet mit der nächsten fehlerfreien Zeile weiter. Fehlerbehaftete Variablen werden aber weiter durch das Programm gezogen. Excel Makros und VBA, 01.04.09 Seite 9

Informationen zum Fehler Das Objekt Err sammelt alle Fehler eines VBA-Programms. Die Eigenschaft Err.Number hat als Wert eine eindeutige Fehlernummer. Err.Description gibt eine Textbeschreibung des Fehlers zurück. Err.Helpfile kann einen Fehler mit einer Hilfeseite verbinden. Err.Source enthält einen Hinweis auf den Auslöser des Fehlers. Die Methode Err.Clear setzt alle Eigenschaften des Objekts auf die Standardwerte zurück. Die vorhandenen Fehler werden gelöscht. Die Methode Err.Raise löst einen Laufzeitfehler aus. Excel Makros und VBA, 01.04.09 Seite 10

Sprungmarken nutzen Der Name einer Sprungmarke ist frei On Error GoTo ausgabefehler wählbar und eindeutig. txtwert = InputBox("Bitte geben Sie eine Zahl Dem ein:") Namen der intwert = CInt(txtWert) Marke folgt immer ein ergebnis = 5 \ intwert Doppelpunkt. Anschließend folgen MsgBox "5 \ " & intwert & " = " & ergebnis die dazugehörigen Exit Sub Anweisungen. Falls kein Fehler ausgabefehler: auftritt, muss die MsgBox Err.Description Prozedur vor der intwert = 1 Sprungmarke Resume Next verlassen werden. Excel Makros und VBA, 01.04.09 Seite 11

Fortsetzung in der nächsten Zeile On Error GoTo ausgabefehler txtwert = InputBox("Bitte geben Sie eine Zahl ein:") intwert = CInt(txtWert) ergebnis = 5 \ intwert Das Programm wird MsgBox "5 \ " & intwert & " = " & ergebnis mit der Zeile, die nach Exit Sub der fehlerbehafteten Zeile kommt, fortgesetzt. ausgabefehler: MsgBox Err.Description intwert = 1 Resume Next Excel Makros und VBA, 01.04.09 Seite 12

Fehlerbehaftete Zeile wiederholen On Error GoTo ausgabefehler txtwert = InputBox("Bitte geben Sie eine Zahl ein:") intwert = CInt(txtWert) Die Anweisung wird ergebnis = 5 \ intwert solange wiederholt, bis der Benutzer eine MsgBox "5 \ " & intwert & " = " & ergebnis Exit Sub ausgabefehler: MsgBox Err.Description txtwert = InputBox("Bitte geben Sie eine Zahl ein:") Resume Zahl eingibt, die als Ganzzahl interpretiert werden kann. Excel Makros und VBA, 01.04.09 Seite 13

Enumeration für eigene Fehlercodes Public Enum myerrornumber ERR_NOTANUMBER ERR_ISDECIMAL End Enum In einer Aufzählung werden Werte zusammengefasst. Jede Variable in einer Enumeration symbolisiert einen bestimmten Wert. Die erste Variable symbolisiert den Wert 0 und so weiter. Mit Hilfe des Gleichheitszeichen kann jeder Variablen ein Wert zugewiesen werden.... können nur am Anfang eines Moduls definiert werden. Excel Makros und VBA, 01.04.09 Seite 14

Funktion für eigene Fehlermeldungen Function RaiseError(ErrNumber As myerrornumber) As String Dim enumber As Long enumber = vbobjecterror + 513 + ErrNumber Select Case ErrNumber Case ERR_NOTANUMBER RaiseError = "Eingabe: Nicht numerisches Zeichen" Case ERR_ISDECIMAL RaiseError = "Eingabe: Dezimalzahl" End Select End Function In Abhängigkeit einer Enumeration- Variablen wird eine Fehlermeldung ausgegeben. Excel Makros und VBA, 01.04.09 Seite 15

Systemfehler Function RaiseError(ErrNumber As myerrornumber) As String Dim enumber As Long enumber = vbobjecterror + 513 + ErrNumber Select Case ErrNumber Case ERR_NOTANUMBER RaiseError = "Eingabe: Nicht numerisches Zeichen" Case ERR_ISDECIMAL RaiseError = "Eingabe: Dezimalzahl" End Select End Function Systemfehler liegen im Bereich von 0 bis 512. Excel Makros und VBA, 01.04.09 Seite 16

Fehlerroutine nutzen txtwert = InputBox("Bitte geben Sie eine Zahl ein:") If IsNumeric(txtWert) Then If (InStr(txtWert, ",") > 0) Or (InStr(txtWert, ".") > 0) Then MsgBox RaiseError(ERR_ISDECIMAL) Else intwert = CInt(txtWert) ergebnis = 5 \ intwert MsgBox "5 \ " & intwert & " = " & ergebnis End If Else MsgBox RaiseError(ERR_NOTANUMBER) End If Excel Makros und VBA, 01.04.09 Seite 17

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 Debuggen des Programms gefunden werden. Excel Makros und VBA, 01.04.09 Seite 18

... 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. Excel Makros und VBA, 01.04.09 Seite 19

Einzelschritt Das Programm wird Zeile für Zeile durchlaufen. Die momentan auszuführende Zeile wird farbig unterlegt und mit einem Pfeil am Rand gekennzeichnet. Der Pfeil kann mit Hilfe der gedrückt gehaltenen Maustaste verschoben werden. Das Programm führt ab der gekennzeichneten Zeile das Programm neu aus. Legen Sie den Mauszeiger auf einen Bezeichner oder Ausdruck. Der aktuelle Wert wird in einem ToolTip angezeigt. Excel Makros und VBA, 01.04.09 Seite 20

Einzelschritt starten Debuggen Einzelschritt oder <F8>. Jede Zeile muss mit <F8> quittiert werden. Andere Möglichkeit in der Symbolleiste Debuggen: Mit Hilfe des linken Icons wird der Einzelschritt-Modus gestartet. Mit Hilfe des mittleren Icons werden alle Einzelschritte ausgeführt. Aufgerufene Prozeduren oder Funktionen werden in einem Block abgearbeitet. Mit Hilfe des rechten Icons wird die gerade ausgeführte Prozedur oder Funktion in einem Block abgearbeitet. Anschließend wird das Programm angehalten. Excel Makros und VBA, 01.04.09 Seite 21

Haltepunkte... werden durch einen farbigen Punkt am linken Rand des Codefensters dargestellt. Die dazugehörige Zeile wird in der gleichen Farbe gekennzeichnet.... können nicht auf Deklarationsanweisungen, leeren Zeilen, Sprunganweisungen oder Kommentaren gesetzt werden! Excel Makros und VBA, 01.04.09 Seite 22

Arbeitsweise Das Programm wird mit <F5> gestartet. Das Programm wird bis zum ersten Haltepunkt automatisch abgearbeitet. Ab dem Haltepunkt kann das Programm... im Einzelschritt... oder mit <F5> bis zum nächsten Haltepunkt durchlaufen werden. Excel Makros und VBA, 01.04.09 Seite 23

Haltepunkte setzen und löschen Debuggen Haltepunkt ein / aus oder <F9>... setzt einen Haltepunkt in der aktuellen Zeile.... entfernt einen vorhanden Haltepunkt. Debuggen Alle Haltepunkte löschen entfernt alle Haltepunkte aus dem aktuellen Projekt. Excel Makros und VBA, 01.04.09 Seite 24

Verschiedene Fenster nutzen Voraussetzung: Das Programm wird im Einzelschritt durchlaufen. Ansicht Direktfenster. Geben Sie den gewünschten Befehl ein. Schließen Sie die Zeile mit <RETURN> ab. Der Befehl wird direkt ausgeführt und das Ergebnis angezeigt. Lokalfenster. Alle im aktuellen Block, gültigen Variablen werden angezeigt. Aufrufliste. In welcher Zeile wird eine Prozedur aufgerufen? Überwachungsfenster. Kontrolle von Variablen, Audrücken, etc. Excel Makros und VBA, 01.04.09 Seite 25

Direktfenster... kann den Programmablauf zum Teil protokollieren. Variablenwerte können mit Hilfe der Anweisung Debug.Print in das Direktfenster geschrieben werden. Variablenwerte können über das Direktfenster verändert werden. Im Direktfenster können Funktionen ausprobiert werden. Excel Makros und VBA, 01.04.09 Seite 26

Anweisungen im Direktfenster Klicken Sie mit den Mauszeiger auf eine freie Stelle im Direktfenster. Geben Sie die Anweisung?Variable ein. Schließen Sie die Anweisung mit <ENTER> ab. Der Wert der Variablen wird in der nächsten Zeile angezeigt. Die Anweisung variable = wert verändert den Wert der Variablen. Die Anweisung?Funktion(para, para,...) führt eine bestimmte Funktion aus. Das Resultat der Funktion wird in der nachfolgenden Zeile angezeigt. Vordefinierte Funktionen können getestet werden. Excel Makros und VBA, 01.04.09 Seite 27

Aktueller Wert einer Variablen Markieren Sie gewünschte Variable mit Hilfe der Maus. Klicken Sie auf Debuggen Aktuellen Wert anzeigen. In dem sich öffnenden Dialogfenster wird... die Prozedur angezeigt, in der sich die Variable befindet.... der Variablennamen angezeigt.... der aktuelle Wert der Variablen angezeigt. Excel Makros und VBA, 01.04.09 Seite 28

Überwachungsfenster Eine Variable oder ein Ausdruck wird zeilenweise angezeigt. Folgende Informationen werden im Fenster angezeigt: Der Name der Variablen. Der aktuelle Wert der Variablen. Der Datentyp der Variablen. Wo befindet sich der zu überwachende Ausdruck. Das Icon am Anfang der Zeile zeigt die Art der Überwachung an. Hier wird der Überwachungsausdruck genutzt. Excel Makros und VBA, 01.04.09 Seite 29

Zeilen bearbeiten Mit einem Klick auf das Icon wird eine Zeile vollständig markiert. <ENTF> löscht die Zeile aus dem Überwachungsfenster. Mit Hilfe der rechten Maustaste wird das dazugehörige Kontextfenster geöffnet. Klicken Sie auf den Befehl Überwachung bearbeiten, um die Überwachung zu verändern. Markieren Sie den Wert einer Variablen im Überwachungsfenster. Geben Sie mit Hilfe der Tastatur einen neuen Wert ein und bestätigen diesen mit <RETURN>. Excel Makros und VBA, 01.04.09 Seite 30

Variable dem Überwachungsfenster hinzufügen Markieren Sie die zu überwachende Variable. Öffnen Sie mit der rechten Maustaste das dazugehörige Kontextmenü und wählen den Befehl Überwachung hinzufügen. Schließen Sie das Dialogfenster mit OK. Excel Makros und VBA, 01.04.09 Seite 31

Überwachungsarten Überwachungsausdruck Der Wert der Variablen wird im Überwachungsfenster angezeigt. Das Programm wird nicht automatisch aufgrund des Überwachungsausdrucks unterbrochen. Unterbrechen, wenn der Wert True ist Falls die boolsche Variablen den Wert true hat, wird das Programm unterbrochen. Falls die numerische Variable einen Wert ungleich null hat, wird das Programm unterbrochen. Unterbrechen, wenn der Wert sich geändert hat Sobald sich der Wert ändert, wird das Programm unterbrochen. Excel Makros und VBA, 01.04.09 Seite 32