VBA Type Mismatch Error

Typfehlanpassungsfehler oder wir können ihn auch als Fehlercode 13 bezeichnen. Er tritt auf, wenn wir einer Variablen, die nicht vom Datentyp ist, einen Wert zuweisen, z. B. wenn wir einer ganzzahligen Datentypvariablen einen dezimalen oder langen Wert bereitstellen Beim Ausführen des Codes, der als Fehlercode 13 angezeigt wird, tritt dieser Typ-Nichtübereinstimmungsfehler auf.

Was ist ein VBA-Typ-Fehlanpassungsfehler?

VBA Type Mismatch Error in Excel ist eine Art "Laufzeitfehler" und der Fehler Nummer 13 in dieser Kategorie.

Um mit dem Lernen in VBA und für Anfänger zu beginnen, ist es schwierig, den Fehler zu finden, der durch die VBA-Codes ausgelöst wird. Denken Sie daran, dass VBA keinen Fehler auslöst, sondern nur unsere Fehler beim Schreiben des Codes hervorhebt.

Normalerweise deklarieren wir Variablen und weisen ihr Datentypen zu. Wenn wir diesen Variablen einen Wert zuweisen, müssen wir uns merken, welche Art von Daten sie enthalten können. Wenn der zugewiesene Wert nicht dem Datentyp entspricht, wird "Laufzeitfehler 13: Typkonflikt" angezeigt.

Wie behebt man den VBA-Typ-Mismatch-Laufzeitfehler 13?

Sehen wir uns einige Beispiele an, um diesen VBA-Typ-Fehlanpassungsfehler zu verstehen.

Sie können diese VBA Type Mismatch Excel-Vorlage hier herunterladen - VBA Type Mismatch Excel-Vorlage

VBA Type Mismatch - Beispiel 1

Ein Beispiel finden Sie im folgenden VBA-Code.

Code:

 Sub Type_MisMatch_Example1 () Dim k As Byte k = "Hiii" MsgBox k End Sub 

Ich habe die Variable "k" als Byte deklariert.

Dies bedeutet, dass die Variable "k" Werte von 0 bis 255 enthalten kann. In der nächsten Zeile habe ich den Wert für die Variable "k" als "Hiii" zugewiesen.

Es ist sehr klar, dass der Datentyp nicht den Wert eines Textes enthalten kann, daher kommt hier der Typkonfliktfehler.

VBA Type Mismatch - Beispiel 2

Schauen Sie sich nun ein weiteres Beispiel mit einem anderen Datentyp an. Schauen Sie sich den folgenden Code an.

Code:

 Sub Type_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub 

Wir haben die Variable "x" als Boolean deklariert.

Boolean ist ein Datentyp, der den Wert TRUE oder FALSE enthalten kann.

Im obigen Code haben wir einen Wert von 4556 zugewiesen, der nicht den Datentypwerten von TRUE oder FALSE entspricht.

Wenn wir diesen Code ausführen, würden Sie einen Typkonfliktfehler erwarten, aber sehen Sie, was passiert, wenn wir diesen Code ausführen.

Sie müssen sich fragen, warum dies nicht zu einem Laufzeitfehler 13 vom Typ Mismatch Error führt.

Der Grund dafür ist, dass Excel alle Zahlen mit Ausnahme von Null als WAHR behandelt. Der Nullwert wird als FALSE behandelt. Deshalb haben wir das Ergebnis als WAHR anstatt als Fehler erhalten.

Nun siehe, ich werde einen numerischen Wert mit Text zuweisen.

Code:

 Sub Type_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub 

Dies wird definitiv Laufzeitfehler 13: Typ Mismatch auslösen.

VBA Type Mismatch - Beispiel 3

Schauen Sie sich nun den folgenden Code für dieses Beispiel an.

Code:

 Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub 

Die Variable "x" ist ein ganzzahliger Datentyp und "y" ist ein String-Datentyp.

X = 45 und y = 2019 Jan.

Im Meldungsfeld habe ich x + y hinzugefügt.

Dies ist jedoch nicht der perfekte Code, da wir keine Zahlen mit Zeichenfolgentexten hinzufügen können. Wir werden auf Laufzeitfehler 13 stoßen.

VBA Type Mismatch - Beispiel 4

Ausnahmefällen

Es gibt Situationen, in denen Excel die falschen Daten vergibt, die dem variablen Datentyp zugewiesen sind. Ein Beispiel finden Sie im folgenden Code.

Code:

 Sub Type_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58,85 y = "85" MsgBox x & vbNewLine & y End Sub 

Zwei deklarierte Variablen sind "x" und "y".

Für diese Variable lautet der zugewiesene Datentyp "Long".

Der lange Datentyp akzeptiert nur ganze Zahlen, keine Dezimalwerte.

Die allgemeine Wahrnehmung besteht also darin, den Laufzeitfehler 13 vom Typ Fehlanpassungsfehler zu erhalten.

Aber mal sehen, was passiert, wenn wir diesen Code ausführen.

Beeindruckend!!! Wir haben die Werte 59 & 85.

Dies liegt daran, dass VBA den Dezimalwert 58,85 in den nächsten ganzzahligen Wert konvertiert und obwohl Zahlen in doppelte Anführungszeichen eingeschlossen sind, nur in den ganzzahligen Wert konvertiert wird.