Laufzeitfehler ‚13‘

Dies ist ein Fehler, der auftritt, wenn wir versuchen, einen Wert für eine Variabel anzugeben, die nicht mit ihrem Datentyp übereinstimmt. Wenn Sie eine Variabel in VBA deklarieren, müssen Sie den Datentyp dieser Variablen angeben. Andernfalls erhalten Sie den Type Mismatch-Fehler 13. In diesem Artikel behandeln wir die möglichen Gründe für das Auftreten dieses Fehlers und wie Sie den Fehler beheben können.

Beispiel:

Wenn im Code eine Variabel als Datum deklariert wird und dann versucht wird, eine Zelle anzusteuern, wo kein Datum drin steht, dann erhalten Sie den Laufzeitfehler 13, weil kein Datum erkannt wird.

Dies sind die fünf möglichen Ursachen des Fehlers:

  • Die Variabel oder Eigenschaft hat nicht den richtigen Typ.
  • Ein Objekt wurde an eine Prozedur übergeben, die eine einzelne Eigenschaft oder einen einzelnen Wert erwartet.
  • Ein Modul- oder Projektname wurde verwendet, wo ein Ausdruck erwartet wurde.
  • Sie haben versucht, die herkömmliche grundlegende Fehlerbehandlung mit Variant-Werten des Untertyps „Error“ zu mischen.
  • Ein CVErr-Wert kann nicht in Datum konvertiert werden

Wir werden uns jede dieser möglichen Ursachen ansehen und eine Lösung anbieten.

Was verursacht den Fehler?

Bevor Sie mit der Behebung des Fehlers fortfahren, müssen Sie die Fehlerursache in Ihrem VBA-Code identifizieren. Die Codezeile, die den Fehler verursacht, wird gelb hervorgehoben, sobald die Debug-Schaltfläche gedrückt wird.

Ursache 1: Die Variabel oder Eigenschaft hat nicht den richtigen Typ.

Beispielsweise kann eine Variabel, die einen ganzzahligen Wert erfordert, keine Buchstaben akzeptieren, es sei denn, die gesamte Zeichenfolge kann als Ganzzahl erkannt werden.

Lösung:

Versuchen Sie, Zuordnungen nur zwischen kompatiblen Datentypen vorzunehmen. Beispielsweise kann einem Long immer ein Integer, einem Double immer ein Single und einem Variant jeder Typ (außer einem benutzerdefinierten Typ) zugewiesen werden.

Ursache 2: Ein Objekt wurde an eine Prozedur übergeben, die eine einzelne Eigenschaft oder einen einzelnen Wert erwartet.

Lösung:

Rufen Sie die relevante Methode für das Objekt auf oder übergeben Sie die richtige einzelne Eigenschaft.

Ursache 3: Ein Modul- oder Projektname wurde verwendet, wo ein Ausdruck erwartet wurde

Beispielcode:


Lösung:
Geben Sie einen Ausdruck an, der angezeigt werden kann.

Ursache 4: Sie haben versucht, die herkömmliche grundlegende Fehlerbehandlung mit Variant-Werten zu mischen, die den Untertyp „Error“ haben.

Beispielcode:

Lösung:
Um einen Fehler erneut zu generieren, müssen Sie ihn einem intrinsischen Visual Basic- oder einem benutzerdefinierten Fehler zuordnen und diesen Fehler dann generieren.
 

Ursache 5: Ein CVErr-Wert kann nicht in Date konvertiert werden

Verwenden Sie die CVErr-Funktion, um in von Benutzern erstellten Prozeduren benutzerdefinierte Fehler zu erstellen. Wenn Sie z. B. eine Funktion erstellen, die mehrere Argumente akzeptiert und normalerweise eine Zeichenfolge zurückgibt, können Sie mit der Funktion die Eingabeargumente auswerten, um sicherzustellen, dass diese sich im zulässigen Bereich bewegen. Ist dies nicht der Fall, ist die Wahrscheinlichkeit hoch, dass die Funktion nicht das erwartete Ergebnis zurückgibt. In diesem Fall können Sie mit CVErr eine Fehlernummer zurückgeben, anhand der ermittelt werden kann, welche Maßnahmen ergriffen werden sollten.

Beispielcode:

Lösung:

Verwenden Sie eine Select Case-Anweisung oder ein ähnliches Konstrukt, um die Rückgabe von CVErr einem solchen Wert zuzuordnen.

Benötigen Sie einen VBA Programmierer?

Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).

Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen