VBA Type Mismatch Error (Eksempler) - Hvordan fikse kjøretidsfeil 13?

Innholdsfortegnelse

Type mismatch Error, eller vi kan også kalle det som feilkode 13, det oppstår når vi tilordner en verdi til en variabel som ikke er av datatypen, for eksempel hvis vi gir en desimal- eller langverdi til en heltallsdatatypevariabel, vil vi støter på denne feilen i feil med typen når vi kjører koden som vises som feilkode 13.

Hva er VBA Type Mismatch Error?

VBA Type Mismatch Error i Excel er en type "Run Time Error", og det er nummer 13-feilen i denne kategorien.

For å starte læringene i VBA og for nybegynnere, er det vanskelig å finne feilen som VBA-kodene gir. Husk at VBA ikke kaster feil. Snarere fremhever det bare feilene våre mens vi skriver koden.

Vi erklærer vanligvis variabler, og vi tilordner datatyper til det. Når vi tilordner en verdi til disse variablene, må vi huske hva slags data den kan inneholde. Hvis den tildelte verdien ikke er i henhold til datatypen, får vi "Run Time Error 13: Type Mismatch".

Hvordan fikse VBA Type Mismatch Run-time Error 13?

La oss se noen eksempler for å forstå denne VBA Type Mismatch Error.

VBA Type Mismatch - Eksempel 1

Se for eksempel på VBA-koden nedenfor.

Kode:

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

Jeg har erklært variabelen “k” som Byte.

Dette betyr at variabelen "k" kan ha verdier fra 0 til 255. Men i neste linje har jeg tilordnet verdien for variabelen "k" som "Hiii."

Det er veldig klart at datatypen ikke kan inneholde verdien av en tekst, så her kommer Type Mismatch Error.

VBA Type Mismatch - Eksempel 2

Ta en titt på et eksempel til med en annen datatype. Se på koden nedenfor.

Kode:

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

Vi har erklært variabelen “x” som boolsk.

Boolsk er en datatype som kan inneholde verdien SANN eller FALSK.

I koden ovenfor har vi tildelt en verdi på 4556, som ikke er i samsvar med datatypeverdiene TRUE eller FALSE.

Når vi kjører denne koden, kan du forvente en feilfeil med typen, men se hva som skjer når vi kjører denne koden.

Du må lure på hvorfor dette ikke gir runtime error 13 of type mismatch error.

Årsaken til dette er excel behandler alle tallene som TRUE unntatt null. Null verdi vil bli behandlet som FALSE. Så det er derfor vi fikk resultatet som SANT i stedet for en feil.

Se nå, jeg vil tildele en numerisk verdi med tekst.

Kode:

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

Dette vil definitivt kaste Run Time Error 13: Type Mismatch.

VBA Type Mismatch - Eksempel # 3

Se nå koden nedenfor for dette eksemplet.

Kode:

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

Variabel "x" er en heltalsdatatype, og "y" er en strengdatatype.

X = 45 og y = 2019 jan.

I meldingsboksen har jeg lagt til x + y.

Men dette er ikke den perfekte koden fordi vi ikke kan legge til tall med strengtekster. Vi vil møte kjøretidsfeil 13.

VBA Type Mismatch - Eksempel # 4

Eksepsjonelle saker

Det er situasjoner der excel tilgir feil data tilordnet den variable datatypen. Se for eksempel på koden nedenfor.

Kode:

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

To deklarerte variabler er "x" og "y."

For denne variabelen er den tildelte datatypen “Lang”.

Lang datatype godtar bare hele tall, ikke desimalverdier.

Så generell oppfatning er å få kjøretidfeil 13 av typefeil.

Men la oss se hva som skjer når vi kjører denne koden.

Wow !!! Vi fikk verdiene 59 & 85.

Dette er fordi VBA vil konvertere desimalverdien 58,85 til nærmeste heltallverdi, og selv om tall er omsluttet med doble anførselstegn, konverteres det bare til heltallverdien.

Interessante artikler...