VBA-fejl med uoverensstemmelse (eksempler) - Sådan løses kørselsfejl 13?

Type mismatch Error, eller vi kan også kalde det som Fejlkode 13, det opstår, når vi tildeler en værdi til en variabel, der ikke er af dens datatype, for eksempel hvis vi giver en decimal- eller lang værdi til en heltal datatypevariabel, vil vi støder på denne type mismatch-fejl, når vi kører koden, der vises som fejlkode 13.

Hvad er VBA Type Mismatch Error?

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

For at starte læringen i VBA og for begyndere er det svært at finde den fejl, der kastes af VBA-koderne. Husk, VBA kaster ikke en fejl. Snarere fremhæver det bare vores fejl, mens du skriver koden.

Vi erklærer normalt variabler, og vi tildeler datatyper til det. Når vi tildeler en værdi til disse variabler, skal vi huske, hvilken slags data den kan indeholde. Hvis den tildelte værdi ikke er i henhold til datatypen, får vi "Run Time Error 13: Type Mismatch".

Sådan løses VBA Type Mismatch Run-time Error 13?

Lad os se nogle eksempler for at forstå denne VBA Type Mismatch Error.

VBA Type Mismatch - Eksempel # 1

Se for eksempel på nedenstående VBA-kode.

Kode:

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

Jeg har erklæret variablen “k” som Byte.

Dette betyder, at variablen “k” kan indeholde værdier fra 0 til 255. Men i den næste linje har jeg tildelt værdien for variablen “k” som “Hiii.”

Det er meget klart, at datatypen ikke kan indeholde værdien af ​​en tekst, så her kommer Type Mismatch Error.

VBA Type Mismatch - Eksempel # 2

Se nu på endnu et eksempel med en anden datatype. Se på nedenstående kode.

Kode:

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

Vi har erklæret variablen “x” som boolsk.

Boolsk er en datatype, der kan indeholde værdien enten SAND eller FALSK.

I ovenstående kode har vi tildelt en værdi på 4556, som ikke er i henhold til datatypeværdierne TRUE eller FALSE.

Når vi kører denne kode, forventer du en type mismatchfejl, men se hvad der sker, når vi kører denne kode.

Du må undre dig over, hvorfor dette ikke giver runtime error 13 af typen mismatch error.

Årsagen til dette er excel behandler alle numrene som SAND undtagen nul. Nul værdi behandles som FALSK. Så derfor fik vi resultatet som SAND i stedet for en fejl.

Se nu, jeg tildeler en numerisk værdi med tekst.

Kode:

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

Dette vil helt sikkert kaste Run Time Error 13: Type Mismatch.

VBA Type Mismatch - Eksempel # 3

Se nu på nedenstående kode for dette eksempel.

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 heltal datatype, og “y” er en streng datatype.

X = 45 og y = 2019 jan.

I meddelelsesfeltet har jeg tilføjet x + y.

Men dette er ikke den perfekte kode, fordi vi ikke kan tilføje tal med strengtekster. Vi støder på Run Time Error 13.

VBA Type Mismatch - Eksempel # 4

Ekstraordinære sager

Der er situationer, hvor excel tilgiver de forkerte data, der er tildelt den variable datatype. Se f.eks. Nedenstående kode.

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 deklarerede variabler er "x" og "y".

For denne variabel er den tildelte datatype "Lang".

Lang datatype accepterer kun hele tal, ikke decimalværdier.

Så generel opfattelse er at få kørtidsfejl 13 af typefejltilpasningsfejl.

Men lad os se, hvad der sker, når vi kører denne kode.

Wow !!! Vi fik værdierne som 59 & 85.

Dette skyldes, at VBA konverterer decimalværdien 58.85 til nærmeste heltal, og selvom tal er lukket med dobbelt anførselstegn, konverteres det kun til heltalets værdi.

Interessante artikler...