{"id":3013,"date":"2023-11-18T02:08:34","date_gmt":"2023-11-18T02:08:34","guid":{"rendered":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/"},"modified":"2023-12-03T11:12:01","modified_gmt":"2023-12-03T11:12:01","slug":"fehlerbehandlung","status":"publish","type":"page","link":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/","title":{"rendered":"Arten von vba-fehlern: debugging und l\u00f6sung"},"content":{"rendered":"<div class=\"excel-vor-dem-inhalt\" id=\"excel-617074971\"><script type=\"text\/javascript\">\r\n\tatOptions = {\r\n\t\t'key' : 'c1158f160081d6540a8409e6925dab94',\r\n\t\t'format' : 'iframe',\r\n\t\t'height' : 250,\r\n\t\t'width' : 300,\r\n\t\t'params' : {}\r\n\t};\r\n<\/script>\r\n<script type=\"text\/javascript\" src=\"\/\/www.highperformanceformat.com\/c1158f160081d6540a8409e6925dab94\/invoke.js\"><\/script><\/div> <p>Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man sich auf jeden Fall mit ihnen auseinandersetzen muss. Sie k\u00f6nnen unterschiedliche Ursachen haben, etwa fehlerhafte Codierung, unm\u00f6gliche Operationen (z. B. Division durch Null) oder unerwartete Fehler.<\/p><p> Der beste Weg, damit umzugehen, besteht darin, ein gutes Verst\u00e4ndnis aller m\u00f6glichen Ergebnisse zu haben, die Sie mit dem Code erzielen k\u00f6nnen. Schauen Sie sich das Beispiel unten an, in dem wir einen VBA-Code haben, der die Quadratwurzel der Zahl anhand des Werts berechnet, den Sie in der ausgew\u00e4hlten Zelle haben.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() ActiveCell. <strong>Value<\/strong> = ActiveCell. <strong>Value<\/strong> ^ (1 \/ 2) <strong>End<\/strong> Sub<\/code><\/pre><p> Wenn die aktive Zelle jedoch einen anderen Wert als eine Zahl hat, erhalten Sie einen Laufzeitfehler wie unten. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58225\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\" sizes=\"auto, \" srcset=\"\" alt=\"Laufzeit Fehler\" width=\"531\" height=\"361\"><\/figure><\/div><h2 class=\"wp-block-heading\"> Fehlerparameter in VBA (Error Catching)<\/h2><p> In der VBA-Option k\u00f6nnen Sie die Einstellung so konfigurieren, dass Fehler behandelt werden, bevor Sie mit dem Schreiben von Codes beginnen. Um die VBA-Einstellungen zu \u00f6ffnen, gehen Sie zu Extras \u27a4 Optionen \u27a4 Allgemein \u27a4 Fehlererkennung. Hier haben Sie drei M\u00f6glichkeiten, die Sie nutzen k\u00f6nnen. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58226\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/02-parametres-derreur-dans-vba.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"532\" height=\"336\"><\/figure><\/div><ul><li> <strong>Bei allen Fehlern stoppen<\/strong> : Wenn Sie diese Option aktiviert haben, stoppt VBA den Code f\u00fcr alle Arten von Fehlern, selbst wenn Sie alle Arten von Fehlerbehandlungstechniken verwendet haben.<\/li><li> <strong>Manipulationsklassenmodul<\/strong> : Mit dieser Option stoppt VBA alle Ihre Codes, die von keiner Technik verarbeitet werden. Und wenn Sie Objekte wie Userforms verwenden, werden auch diese Objekte durchbrochen und die genaue Zeile hervorgehoben, in der sich der Fehler befindet.<\/li><li> <strong>Bei nicht behandelten Fehlern unterbrechen<\/strong> : Dies ist die Standardeinstellung, die Sie \u00fcber alle Fehler informiert, f\u00fcr die Sie keine Fehlerbehandlungstechniken verwenden, und die den Code f\u00fcr alle nicht behandelten Fehler stoppt. (Wenn Sie jedoch Objekte wie Userforms verwenden, wird dadurch nicht die Zeile hervorgehoben, die den Fehler im Objekt verursacht, sondern nur die Zeile, die auf dieses Objekt verweist.)<\/li><\/ul><h2 class=\"wp-block-heading\"> Arten von VBA-Fehlern<\/h2><p> Um VBA-Fehler zu verstehen, k\u00f6nnen Sie sie in vier Kategorien einteilen. Im Folgenden finden Sie eine Erkl\u00e4rung dieser Fehlertypen.<\/p><h3 class=\"wp-block-heading\"> 1. Syntaxfehler<\/h3><p> Beim Schreiben von VBA-Code m\u00fcssen Sie eine bestimmte Syntax befolgen. Wenn Sie diese ignorieren oder nicht richtig schreiben, kann es zu einem SYNTAX-Fehler (auch Sprachfehler genannt) kommen. Es ist wie bei Tippfehlern, die Sie beim Schreiben Ihrer Codes machen.<\/p><p> Nun, VBA hilft Ihnen, indem es diese Fehler meldet, indem es eine Fehlermeldung anzeigt. Sie m\u00fcssen lediglich sicherstellen, dass \u201eAutomatische Syntaxpr\u00fcfung\u201c in Ihrem VB-Editor aktiviert ist.<\/p><p> Gehen Sie zu Tool \u27a4 Optionen und stellen Sie sicher, dass das Kontrollk\u00e4stchen \u201eAutomatische Syntaxpr\u00fcfung\u201c aktiviert ist. Wenn Sie dabei einen SYNTAX-Fehler machen, zeigt VBA eine Fehlermeldung an. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58227\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/03-erreur-de-syntaxe.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"533\" height=\"336\"><\/figure><\/div><p> Wenn jedoch die \u201eAutomatische Syntaxpr\u00fcfung\u201c deaktiviert ist, hebt VBA die Codezeile mit dem Fehler zwar hervor, zeigt die Fehlermeldung jedoch nicht an.<\/p><h3 class=\"wp-block-heading\"> 2. Kompilierungsfehler<\/h3><p> Dies geschieht, wenn Sie Code schreiben, um eine Aktivit\u00e4t auszuf\u00fchren, diese Aktivit\u00e4t jedoch ung\u00fcltig ist oder nicht von VBA ausgef\u00fchrt werden kann. Das beste Beispiel ist, dass Sie Code haben, der eine IF-Anweisung verwendet, Sie aber das Hinzuf\u00fcgen von END IF am Ende der Anweisung verpasst haben und jetzt, wenn Sie dieses VBA ausf\u00fchren, eine Kompilierungsfehlermeldung angezeigt wird. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58228\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/04-erreur-de-compilation.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"500\" height=\"251\"><\/figure><\/div><p> Abgesehen davon gibt es noch weitere Beispiele f\u00fcr Kompilierungsfehler:<\/p><ul><li> Verwenden von For ohne Next ( <a href=\"https:\/\/exceladvisor.org\/de\/fur-die-schleife\/\">For Next<\/a> ).<\/li><li> W\u00e4hlen Sie aus, ohne das Ende auszuw\u00e4hlen ( <a href=\"https:\/\/exceladvisor.org\/de\/wahlen-sie-den-fall-aus\/\">Fall ausw\u00e4hlen<\/a> ).<\/li><li> Deklarieren Sie keine Variable, wenn Sie \u201e <a href=\"https:\/\/exceladvisor.org\/de\/explizite-option-2\/\">Explicit Option<\/a> \u201c aktiviert haben.<\/li><li> Aufrufen einer Unterfunktion\/Funktion, die nicht existiert.<\/li><\/ul><h3 class=\"wp-block-heading\"> 3. Laufzeitfehler<\/h3><p> Bei der Ausf\u00fchrung des Codes tritt ein Laufzeitfehler auf. Erinnern Sie sich an das Beispiel, das ich Ihnen oben mitgeteilt habe, als der Code die Quadratwurzel einer Zahl berechnete. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58229\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/05-erreur-dexecution-lors-de-lexecution-du-code.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"547\" height=\"372\"><\/figure><\/div><p> Wenn beim Ausf\u00fchren des Codes ein Laufzeitfehler auftritt, stoppt es den Code und zeigt Ihnen das Fehlerdialogfeld an. Dieses Fehlerfeld informiert \u00fcber die Art des Fehlers, den Sie haben. Angenommen, Sie haben Code geschrieben, der <a href=\"https:\/\/exceladvisor.org\/de\/offener-aktenschrank\/\">eine Arbeitsmappe an dem von Ihnen angegebenen Speicherort \u00f6ffnet<\/a> , aber diese Arbeitsmappe wird jetzt von jemandem verschoben oder gel\u00f6scht. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58178\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/6-vba-affiche-une-erreur-dexecution.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"452\" height=\"149\"><\/figure><\/div><p> Wenn Sie den Code ausf\u00fchren, zeigt Ihnen VBA einen Laufzeitfehler an, da diese Datei an diesem Speicherort nicht gefunden werden kann. Die Meldung, die Sie bei einem Laufzeitfehler erhalten, beschreibt die Ursache, die Ihnen hilft, die Ursache des Fehlers zu verstehen. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58179\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/7-erreur-dexecution-1004.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"381\" height=\"215\"><\/figure><\/div><p> Und wenn ein Laufzeitfehler auftritt, wird die Codeausf\u00fchrung gestoppt. Wenn Sie auf die Schaltfl\u00e4che \u201eDebuggen\u201c klicken, wird Ihnen die Codezeile angezeigt, die diesen Fehler enth\u00e4lt, indem sie gelb hervorgehoben wird. Oder Sie k\u00f6nnen auf die Schaltfl\u00e4che \u201eEnde\u201c klicken, um die Codeausf\u00fchrung zu stoppen und die Fehlermeldung zu schlie\u00dfen.<\/p><h3 class=\"wp-block-heading\"> 4. Logischer Fehler<\/h3><p> Dies ist kein Fehler, sondern ein Fehler beim Schreiben des Codes. Diese Art von Fehlern kann Ihnen manchmal Schwierigkeiten bereiten, sie zu finden und zu beheben.<\/p><p> Angenommen, Sie schreiben Code und verwenden beim Deklarieren einer Variablen den falschen <a href=\"https:\/\/exceladvisor.org\/de\/variablen\/\">Datentyp<\/a> oder die falschen Berechnungsschritte. In diesem Fall funktioniert Ihr Code einwandfrei und Sie werden diesen Fehler nicht so leicht finden. Der beste Weg, diese Art von Problem zu l\u00f6sen, besteht darin, jede Codezeile einzeln auszuf\u00fchren.<\/p><h2 class=\"wp-block-heading\"> Verwenden von Debugging-Tools in VBA<\/h2><p> VBA stellt Ihnen eine Reihe von Tools zur Verf\u00fcgung, mit denen Sie Ihren Code debuggen und Fehler aus Ihren Codes entfernen k\u00f6nnen.<\/p><h3 class=\"wp-block-heading\"> 1. Kompilieren Sie das VBA-Projekt<\/h3><p> Im Visual Basic-Editor gibt es eine Option, die Sie sofort nach Fertigstellung Ihres Codes verwenden k\u00f6nnen. Diese Kompilierungsoptionen analysieren jede Zeile Ihres Codes und zeigen ein Meldungsfeld an, wenn ein Fehler in Ihrem Code vorliegt.<\/p><p class=\"qt-tip\"> <strong>Hinweis:<\/strong> Die Option \u201eVBA kompilieren\u201c verfolgt nur Syntax- und Kompilierungsfehler, keine Laufzeitfehler, da diese Fehler nur auftreten, wenn ein Code ausgef\u00fchrt wird. Um \u201eVBA-Projekt kompilieren\u201c zu verwenden, gehen Sie zu \u27a4 Debuggen \u27a4 VBA-Projekt kompilieren. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58232\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/08-compiler-le-projet-vba.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"366\" height=\"352\"><\/figure><\/div><p> Sobald Sie \u201eVBA-Projekt kompilieren\u201c ausgef\u00fchrt haben und Ihr Code keine Fehler enth\u00e4lt, werden die Optionen ausgegraut.<\/p><h3 class=\"wp-block-heading\"> 2. F\u00fchren Sie jede Codezeile einzeln aus<\/h3><p> So mache ich es. Wenn ich einen Code fertigstelle, f\u00fchre ich ihn einfach Zeile f\u00fcr Zeile aus, um zu pr\u00fcfen, ob ein Fehler vorliegt. Dies kann einige Zeit dauern, hilft Ihnen jedoch bei der Behebung aller Fehler (Syntax, Kompilierung und Ausf\u00fchrung).<\/p><p> Auf der \u201eDebug-Symbolleiste\u201c gibt es eine Schaltfl\u00e4che \u201eEinsteigen\u201c, mit der Sie Code Zeile f\u00fcr Zeile ausf\u00fchren k\u00f6nnen. Sie k\u00f6nnen aber auch einfach F8 dr\u00fccken, um eine einzelne Zeile auszuf\u00fchren, und dann erneut dr\u00fccken, um die n\u00e4chste Zeile im Code auszuf\u00fchren. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58233\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/09-executer-chaque-ligne-de-code.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"338\" height=\"387\"><\/figure><\/div><h2 class=\"wp-block-heading\"> Verwenden der \u201eOn ERROR\u201c-Anweisung zur Behandlung von VBA-Fehlern<\/h2><p> Es ist wichtig, dass Sie Ihre Codes \u00fcberpr\u00fcfen und m\u00f6gliche Fehler in allen verf\u00fcgbaren Debugging-Methoden finden. Der beste und effizienteste Weg besteht jedoch darin, Anweisungen zur Fehlerbehandlung zu erstellen, die einen Fehler behandeln und Ihren Code bei der Ausf\u00fchrung fehlerfrei machen k\u00f6nnen. Lassen Sie uns diese Aussagen untersuchen. Wenn in einem VBA-Code ein Fehler auftritt, kann dieser Fehler am besten wie folgt behandelt werden:<\/p><ul><li> Lassen Sie den VBA den Fehler ignorieren und den Code ausf\u00fchren<\/li><li> Lassen Sie einen speziellen Befehlssatz ausf\u00fchren, wenn ein Fehler auftritt.<\/li><\/ul><p> In beiden L\u00f6sungen k\u00f6nnen Sie \u201eOn Error\u201c-Anweisungen verwenden. Nachfolgend finden Sie vier \u201eOn Error\u201c-Anweisungen, die Sie verwenden k\u00f6nnen. Schauen wir uns nun jede Aussage einzeln an.<\/p><h3 class=\"wp-block-heading\"> 1. Wenn Sie einen Fehler machen, beginnen Sie erneut<\/h3><p> Diese einfache Codezeile erm\u00f6glicht es VBA, den Code auch dann weiter auszuf\u00fchren, wenn ein Fehler auftritt. <strong>Die IDEE ist einfach:<\/strong> Fahren Sie mit der n\u00e4chsten Codezeile fort, wenn w\u00e4hrend der Ausf\u00fchrung irgendwo ein Fehler festgestellt wird.<\/p><p> Im folgenden Code haben Sie zwei Codezeilen:<\/p><ul><li> Die erste Zeile gibt an, dass der Wert in Zelle A1 25 geteilt durch 0 ist<\/li><li> Und die zweite Zeile besagt, dass der Zellenwert A2 10 geteilt durch 5 ist<\/li><\/ul><p> Jetzt gibt es ein Problem mit dem Code, den Sie online haben. Wie Sie wissen, ist das Ergebnis ein Fehler, wenn Sie etwas durch 0 dividieren. Wenn Sie diesen Code ausf\u00fchren, zeigt VBA die Fehlermeldung <strong>\u201eLaufzeitfehler \u201a11\u2018 Division durch Null\u201c<\/strong> an und stoppt die Ausf\u00fchrung.<\/p><p> Wenn Sie jedoch \u201eOn Error Resume Next\u201c ganz am Anfang des Codes hinzuf\u00fcgen und den Code ausf\u00fchren, ignoriert VBA einfach die Codezeile, in der der Fehler auftritt, f\u00e4hrt mit der zweiten Zeile fort und f\u00fcgt diesen Wert in Zelle A2 hinzu.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub myDivide() <strong>On<\/strong> Error Resume <strong>Next<\/strong> <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> = 25 \/ 0 <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> = 10 \/ 5 <strong>End<\/strong> Sub<\/code><\/pre><p> Wenn Sie also m\u00f6chten, dass Ihr Code ausgef\u00fchrt wird, obwohl irgendwo ein Fehler auftritt, verwenden Sie einfach die Anweisung \u201eOn Error Resume Next\u201c in Ihrem Code.<\/p><p> <strong>Aber noch etwas sollten Sie beachten:<\/strong> Es werden nur Fehler ignoriert, die danach auftreten.<\/p><p> Angenommen, in Zeile 5 tritt ein Fehler auf und Sie haben in Zeile 8 \u201eOn Error Resume Next\u201c hinzugef\u00fcgt. Dieser Fehler wird nicht \u00fcbersprungen. Daher ist es am besten, es als erste Codezeile in die Prozedur einzuf\u00fcgen.<\/p><h3 class=\"wp-block-heading\"> 2. Im Falle eines GoTo 0-Fehlers<\/h3><p> Dies ist das Standardverhalten von VBA: Wenn ein Fehler auftritt, stoppt es die Codeausf\u00fchrung.<\/p><p> Nun, die Verwendung von \u201eOn Error GoTo 0\u201c macht in Ihrem Code keinen Unterschied. VBA stoppt einfach den Code und zeigt eine Meldung mit einer Beschreibung des Fehlers an. Warum sollte ich mir also die M\u00fche machen, es zu benutzen? Kluge Frage. Verwenden wir das Beispiel, das Sie oben in \u201e <strong>On Error Resume Next<\/strong> \u201c verwendet haben.<\/p><p> Wenn in diesem Code ein Fehler auftritt, \u00fcbernimmt VBA die n\u00e4chste Codezeile und f\u00fchrt sie aus, ohne dass eine Fehlermeldung angezeigt wird. Angenommen, Sie haben mehr Zeilen in Ihrem Code und m\u00f6chten diese Zeilen nicht \u00fcberschreiten, wenn im Code ein Fehler auftritt.<\/p><p> Wenn Sie also nach der zweiten Codezeile <strong>\u201eOn Error GoTo 0\u201c<\/strong> eingeben, wird der Standard-Fehlerbehandler von VBA wiederhergestellt, der bei jedem Auftreten eines Fehlers Fehlermeldungen anzeigt.<\/p><h3 class=\"wp-block-heading\"> 3. Im Falle eines GoTo-Fehlers [Label]<\/h3><p> Denken Sie an einen Ort in einem Geb\u00e4ude, zu dem Sie im Notfall gehen k\u00f6nnen. Ebenso k\u00f6nnen Sie mit \u201eOn Error GoTo [Label]\u201c einfach einen separaten Codeblock in Ihrem Hauptcode erstellen, um einen Fehler zu behandeln.<\/p><p> Tats\u00e4chlich ist \u201eOn Error GoTo [Label]\u201c eine viel bessere und bequemere M\u00f6glichkeit, mit Fehlern umzugehen. Im Code unten haben Sie \u201eOn Error GoTo Oh!\u201c Fehler\u201c jetzt in dieser Zeilendeklaration das Wort \u201eOh!\u201c \u201eFehler\u201c ist die Bezeichnung.<\/p><p> Wenn Sie sich das Ende des Codes ansehen, haben Sie einen bestimmten Anfang mit dem Labelnamen und dann einen Code f\u00fcr ein Meldungsfeld mit einer Nachricht zum Code.<\/p><p> Was passiert nun, wenn ein Fehler auftritt? Das VBA springt zum Label \u201eOh! Fehler\u201c und f\u00fchrt den Codeblock aus, den Sie nach dieser Bezeichnung haben.<\/p><p> <strong>Aber es gibt eine Sache, auf die Sie achten m\u00fcssen:<\/strong> Wenn kein Fehler auftritt, wird die Bezeichnung, die Sie in Ihrem Code haben, ausgef\u00fchrt. Es gibt zwei Dinge, die Sie tun m\u00fcssen:<\/p><ul><li> Stellen Sie zun\u00e4chst sicher, dass Sie Ihr Fehler-Tag am Ende des Codes hinzuf\u00fcgen.<\/li><li> Zweitens f\u00fcgen Sie vor der Fehlerbezeichnung ein \u201eExit Sub\u201c hinzu.<\/li><\/ul><p> Damit profitieren Sie in beiden Situationen. Nehmen wir an, wenn ein Fehler auftritt und VBA zu der von Ihnen angegebenen Bezeichnung wechselt, gibt es nur Code von der Bezeichnung selbst bis zum Code. Und wenn kein Fehler auftritt, beendet die Anweisung \u201eExit Sub\u201c, die Sie vor dem Label haben, die Prozedur, ohne das Fehlerlabel auszuf\u00fchren.<\/p><h3 class=\"wp-block-heading\"> 4. Im Falle eines GoTo-Fehlers -1<\/h3><p> Bevor wir darauf eingehen, m\u00f6chte ich Ihnen etwas mitteilen. Wenn in einem Code ein Fehler auftritt, speichert VBA dieses Fehlerprotokoll in seinem Speicher und l\u00f6scht es erst, wenn die Routine abgeschlossen ist.<\/p><p> <strong>O VBA! Lebe in der Gegenwart<\/strong><\/p><p> Um den zweiten Fehler im VBA-Code zu behandeln, m\u00fcssen Sie den ersten Fehler aus dem VBA-Speicher l\u00f6schen. Im folgenden Code haben Sie zwei \u201eOn Error GoTo [Label]\u201c-Anweisungen, die Fehler aus zwei verschiedenen Codebl\u00f6cken behandeln.<\/p><p> Wenn Sie diesen Code jedoch ausf\u00fchren, springt VBA beim zweiten Fehler nicht zu der von Ihnen festgelegten Bezeichnung und zeigt stattdessen die Fehlermeldung \u201eTypkonflikt\u201c an.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() <strong>On<\/strong> Error GoTo myError1 <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> = <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> ^ (1 \/ 2) myError1: MsgBox \"There's some problem with the value you have in the cell A1.\" <strong>On<\/strong> Error GoTo myError2 <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> = <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> ^ (1 \/ 2) myError2: MsgBox \"There's some problem with the value you have in the cell A2.\" <strong>End<\/strong> Sub<\/code><\/pre><p> Um dieses Problem zu beheben, k\u00f6nnen Sie \u201eOn Error GoTo -1\u201c verwenden, wodurch VBA den aktuellen Fehler aus seinem Speicher entfernen kann.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() On Error GoTo myError1 Range(\"A1\").Value = Range(\"A1\").Value ^ (1 \/ 2) myError1: MsgBox \"There's some problem with the value you have in the cell A1.\" On Error GoTo -1 On Error GoTo myError2 Range(\"A2\").Value = Range(\"A2\").Value ^ (1 \/ 2) myError2: MsgBox \"There's some problem with the value you have in the cell A2.\" End Sub<\/code><\/pre><p> Wenn Sie nun diesen Code ausf\u00fchren, entfernt \u201eOn Error GoTo -1\u201c den Fehler aus dem Speicher und VBA behandelt den Fehler in der zweiten Anweisung wie gew\u00fcnscht.<\/p><h2 class=\"wp-block-heading\"> Was muss ich sonst noch wissen, um Fehler in VBA zu behandeln?<\/h2><p> Neben der Verwendung von Fehlerbehandlungstechniken gibt es noch einige andere Dinge, mit denen Sie Fehler besser behandeln k\u00f6nnen.<\/p><h3 class=\"wp-block-heading\"> Objektfehler<\/h3><p> Wenn beim Ausf\u00fchren des Codes ein Fehler aufgetreten ist, k\u00f6nnen Sie das Err-Objekt verwenden, um Details zum Fehler abzurufen. Es gibt einige Eigenschaften und Methoden, die Sie mit dem Err-Objekt verwenden k\u00f6nnen. Lassen Sie uns sie einzeln lernen.<\/p><h4 class=\"wp-block-heading\"> <strong>Eigenschaften<\/strong><\/h4><p> Hier sind die Eigenschaften, die Sie mit dem Err-Objekt verwenden k\u00f6nnen:<\/p><ul><li> <strong>Err.Number<\/strong> : Wenn ein Fehler aufgetreten ist, wird eine Nummer im Err-Objekt gespeichert. Wenn im folgenden Code ein Fehler auftritt, wird im Meldungsfeld die Fehlernummer angezeigt.<\/li><li> <strong>Err.Description<\/strong> : Diese Eigenschaft zeigt die Fehlerbeschreibung an, die Ihnen helfen kann, die Ursache des Fehlers zu verstehen.<\/li><li> <strong>Err.Source:<\/strong> Diese Eigenschaft sagt Ihnen, in welchem Projekt der Fehler aufgetreten ist.<\/li><li> <strong>Err.HelpContext:<\/strong> Diese Eigenschaft gibt die Hilfekontext-ID f\u00fcr den Fehler in der Hilfedatei zur\u00fcck.<\/li><li> <strong>Err.HelpContext:<\/strong> Dies ist ein Zeichenfolgewert f\u00fcr den Speicherort der Hilfedatei.<\/li><\/ul><p> Wenn Sie Fehler mithilfe von Fehlerbehandlungstechniken behandeln, verwenden Sie das Err-Objekt normalerweise nicht h\u00e4ufig in Ihren Codes. Aber unten ist ein einfaches Beispiel f\u00fcr die Verwendung.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\"><strong>Sub<\/strong> Square_Root() <strong>On<\/strong> <strong>Error<\/strong> <strong>GoTo<\/strong> myError1    Range(\"A1\").Value = Sqr(Range(\"A1\").Value) <strong>Exit<\/strong> <strong>Sub<\/strong> myError1:    MsgBox \"There's some problem with the value you have in the cell A1.\" &amp; vbCrLf &amp; _                \"Error Number: \" &amp; Err.Number  &amp; vbCrLf &amp; _                \"Error Description: \" &amp; Err.Description <strong>End<\/strong> <strong>Sub<\/strong><\/code><\/pre><p> Wenn Sie den obigen Code ausf\u00fchren und ein Fehler aufgetreten ist, wird ein Meldungsfeld mit der Fehlernummer und der Fehlerbeschreibung angezeigt.<\/p><h4 class=\"wp-block-heading\"> <strong>Methoden<\/strong><\/h4><p> Mit Err Object k\u00f6nnen Sie auch zwei Methoden verwenden.<\/p><ul><li> <strong>Err.Clear:<\/strong> Diese Methode l\u00f6scht die Fehlernummer und Fehlerbeschreibung aus dem VBA-Speicher (dies unterscheidet sich von \u201eOn Error GoTo -1\u201c, da der Fehler dadurch nicht vollst\u00e4ndig zur\u00fcckgesetzt wird).<\/li><li> <strong>Err.Raise:<\/strong> Mit dieser Methode k\u00f6nnen Sie <a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/vba\/language\/reference\/user-interface-help\/raise-method\" target=\"_blank\" rel=\"noreferrer noopener\">absichtlich einen Laufzeitfehler in Ihrem Code generieren<\/a> . Hier ist die zu befolgende Syntax:<\/li><\/ul><p> <strong>Err<\/strong> .Raise [Nummer], [Quelle], [Beschreibung], [Hilfedatei], [Hilfekontext]<\/p><h2 class=\"wp-block-heading\"> Schnelle Tipps zur Fehlerbehandlung<\/h2><p> Hier sind einige schnelle Tipps, mit denen Sie VBA-Fehler besser behandeln k\u00f6nnen.<\/p><ul><li> Verwenden Sie \u201eOn Error Resume Next\u201c nur, wenn Sie sicher wissen, dass ein Fehler auftritt und es akzeptabel ist, die Codezeile mit einem Fehler zu \u00fcberspringen und sicher mit der n\u00e4chsten Zeile fortzufahren.<\/li><li> Der beste Weg, mit Laufzeitfehlern umzugehen, ist die Verwendung von \u201eError Handler\u201c mit \u201eOn Error GoTo [Label]\u201c. Dadurch wird sichergestellt, dass Sie zwar benachrichtigt werden, wenn der Fehler auftritt, die unangenehme Fehlermeldung jedoch nicht angezeigt wird.<\/li><li> Stellen Sie bei jeder Verwendung des Fehlerhandlers sicher, dass Sie zuerst \u201eExit Sub\u201c verwenden.<\/li><\/ul><div class=\"gb-container gb-container-4db6181c gb-container-mt\"> <a class=\"gb-button gb-button-c5897111 gb-button-text gb-button-mt-button\" href=\"https:\/\/exceladvisor.org\/de\/vba\/\">Was ist VBA<\/a><h2 class=\"gb-headline gb-headline-665e5f6b gb-headline-text gb-headline-mt-heading\"> Verwandte Tutorials <\/h2><div class=\"gb-grid-wrapper gb-grid-wrapper-a20baf7c gb-grid-wrapper-mt-grid\"><div class=\"gb-grid-column gb-grid-column-65ddf67e\"><\/div><div class=\"gb-grid-column gb-grid-column-50067b57\"><div class=\"gb-container gb-container-50067b57\"><ul><li> <a href=\"https:\/\/exceladvisor.org\/de\/uberlauffehler-6\/\">VBA-\u00dcberlauffehler (Fehler 6)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/de\/ausfuhrungsfehler-1004\/\">VBA-Laufzeitfehler (Fehler 1004)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/de\/indexfehler-ausserhalb-des-bereichs-9\/\">VBA-Indexausf\u00fchrungsfehler au\u00dferhalb des zul\u00e4ssigen Bereichs (Fehler 9)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/de\/inkompatibilitatsfehler-typ-13\/\">VBA-Typ-Inkompatibilit\u00e4tsfehler (Fehler 13)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/de\/nicht-genugend-speicherfehler-7\/\">VBA-Fehler \u201eNicht gen\u00fcgend Speicher\u201c (Fehler 7)<\/a><\/li><\/ul><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-3013","page","type-page","status-publish","hentry"],"featured_image_src":null,"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>VBA-Fehlertypen: Debugging und L\u00f6sung 2023 \u2013 Excel Advisor<\/title>\n<meta name=\"description\" content=\"Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man mit ihnen umgehen muss, egal was passiert...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VBA-Fehlertypen: Debugging und L\u00f6sung 2023 \u2013 Excel Advisor\" \/>\n<meta property=\"og:description\" content=\"Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man mit ihnen umgehen muss, egal was passiert...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/\" \/>\n<meta property=\"og:site_name\" content=\"Excel Advisor\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-03T11:12:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/\",\"url\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/\",\"name\":\"VBA-Fehlertypen: Debugging und L\u00f6sung 2023 \u2013 Excel Advisor\",\"isPartOf\":{\"@id\":\"https:\/\/exceladvisor.org\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\",\"datePublished\":\"2023-11-18T02:08:34+00:00\",\"dateModified\":\"2023-12-03T11:12:01+00:00\",\"description\":\"Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man mit ihnen umgehen muss, egal was passiert...\",\"breadcrumb\":{\"@id\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#primaryimage\",\"url\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/exceladvisor.org\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arten von vba-fehlern: debugging und l\u00f6sung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/exceladvisor.org\/de\/#website\",\"url\":\"https:\/\/exceladvisor.org\/de\/\",\"name\":\"Excel Advisor\",\"description\":\"Ihr Leitfaden zur Datendominanz\",\"publisher\":{\"@id\":\"https:\/\/exceladvisor.org\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/exceladvisor.org\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/exceladvisor.org\/de\/#organization\",\"name\":\"Excel Advisor\",\"url\":\"https:\/\/exceladvisor.org\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/exceladvisor.org\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/exceladvisor.org\/de\/wp-content\/uploads\/2023\/11\/exceladvisor.org_.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/de\/wp-content\/uploads\/2023\/11\/exceladvisor.org_.png\",\"width\":105,\"height\":36,\"caption\":\"Excel Advisor\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/de\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"VBA-Fehlertypen: Debugging und L\u00f6sung 2023 \u2013 Excel Advisor","description":"Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man mit ihnen umgehen muss, egal was passiert...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/","og_locale":"de_DE","og_type":"article","og_title":"VBA-Fehlertypen: Debugging und L\u00f6sung 2023 \u2013 Excel Advisor","og_description":"Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man mit ihnen umgehen muss, egal was passiert...","og_url":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/","og_site_name":"Excel Advisor","article_modified_time":"2023-12-03T11:12:01+00:00","og_image":[{"url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/","url":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/","name":"VBA-Fehlertypen: Debugging und L\u00f6sung 2023 \u2013 Excel Advisor","isPartOf":{"@id":"https:\/\/exceladvisor.org\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#primaryimage"},"image":{"@id":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#primaryimage"},"thumbnailUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","datePublished":"2023-11-18T02:08:34+00:00","dateModified":"2023-12-03T11:12:01+00:00","description":"Wie jede andere Programmiersprache hat auch VBA Pech, wenn es zu Fehlern kommt und man mit ihnen umgehen muss, egal was passiert...","breadcrumb":{"@id":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#primaryimage","url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","contentUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png"},{"@type":"BreadcrumbList","@id":"https:\/\/exceladvisor.org\/de\/fehlerbehandlung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/exceladvisor.org\/de\/"},{"@type":"ListItem","position":2,"name":"Arten von vba-fehlern: debugging und l\u00f6sung"}]},{"@type":"WebSite","@id":"https:\/\/exceladvisor.org\/de\/#website","url":"https:\/\/exceladvisor.org\/de\/","name":"Excel Advisor","description":"Ihr Leitfaden zur Datendominanz","publisher":{"@id":"https:\/\/exceladvisor.org\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exceladvisor.org\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/exceladvisor.org\/de\/#organization","name":"Excel Advisor","url":"https:\/\/exceladvisor.org\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/exceladvisor.org\/de\/#\/schema\/logo\/image\/","url":"https:\/\/exceladvisor.org\/de\/wp-content\/uploads\/2023\/11\/exceladvisor.org_.png","contentUrl":"https:\/\/exceladvisor.org\/de\/wp-content\/uploads\/2023\/11\/exceladvisor.org_.png","width":105,"height":36,"caption":"Excel Advisor"},"image":{"@id":"https:\/\/exceladvisor.org\/de\/#\/schema\/logo\/image\/"}}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/pages\/3013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/comments?post=3013"}],"version-history":[{"count":1,"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/pages\/3013\/revisions"}],"predecessor-version":[{"id":3725,"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/pages\/3013\/revisions\/3725"}],"wp:attachment":[{"href":"https:\/\/exceladvisor.org\/de\/wp-json\/wp\/v2\/media?parent=3013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}