Fel i VBA-typ fel

Fel i typavvikelse eller så kan vi också kalla det som felkod 13, det inträffar när vi tilldelar ett värde till en variabel som inte är av dess datatyp, till exempel om vi ger ett decimal- eller långt värde till en heltal datatypvariabel kommer vi stöter på detta typfel när vi kör koden som visas som felkod 13.

Vad är fel i VBA-typmatchning?

Fel i VBA-typmatchning i Excel är en typ av "Run Time Error" och det är nummer 13-felet i denna kategori.

För att börja med inlärningarna i VBA och för nybörjare är det svårt att hitta felet från VBA-koderna. Kom ihåg att VBA inte kastar ett fel utan det är bara att lyfta fram våra misstag när du skriver koden.

Vi deklarerar vanligtvis variabler och vi tilldelar datatyper till det. När vi tilldelar ett värde till dessa variabler måste vi komma ihåg vilken typ av data den kan innehålla, om det tilldelade värdet inte är enligt datatypen får vi "Run Time Error 13: Type Mismatch".

Hur fixar jag VBA Type Mismatch Run-time Error 13?

Låt oss se några exempel för att förstå detta fel i VBA-typavvikelse.

Du kan ladda ner den här VBA-typen felaktig Excel-mall här - VBA-typen felaktig matchning Excel-mall

VBA-typavvikelse - exempel # 1

För ett exempel, se nedanstående VBA-kod.

Koda:

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

Jag har förklarat variabeln "k" som Byte.

Detta betyder att variabeln "k" kan innehålla värden från 0 till 255. Men i nästa rad har jag tilldelat värdet för variabeln "k" som "Hiii".

Det är väldigt tydligt att datatyp inte kan innehålla värdet på en text, så här kommer Type Mismatch Error.

VBA-typavvikelse - exempel # 2

Ta nu en titt på ytterligare ett exempel med en annan datatyp. Titta på koden nedan.

Koda:

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

Vi har förklarat variabeln "x" som boolesk.

Boolean är en datatyp som kan innehålla värdet antingen SANT eller FALSKT.

I ovanstående kod har vi tilldelat värdet 4556, vilket inte är enligt datatypsvärdena SANT eller FALSK.

När vi kör den här koden kan du förvänta dig ett fel i typavvikelse, men se vad som händer när vi kör den här koden.

Du måste undra varför detta inte ger runtime error 13 av typ mismatch error.

Anledningen till detta är att excel behandlar alla siffror som SANT utom noll. Nollvärde kommer att behandlas som FALSE. Så det är därför vi fick resultatet som SANT istället för ett fel.

Nu ska jag tilldela ett numeriskt värde med text.

Koda:

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

Detta kommer definitivt att köra Run Time Error 13: Type Mismatch.

VBA-typmatchning - exempel # 3

Titta nu på koden nedan för det här exemplet.

Koda:

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

Variabel ”x” är en heltalstyp och “y” är en strängdatatyp.

X = 45 och y = 2019 jan.

I meddelandefältet har jag lagt till x + y.

Men det här är inte den perfekta koden eftersom vi inte kan lägga till nummer med strängtexter. Vi kommer att stöta på körtidsfel 13.

VBA-typavvikelse - exempel # 4

Exceptionella fall

Det finns situationer där excel förlåter fel data som tilldelats den variabla datatypen. För ett exempel, se nedanstående kod.

Koda:

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

Två deklarerade variabler är "x" och "y".

För den här variabeln är den tilldelade datatypen ”Lång”.

Lång datatyp accepterar endast heltal, inte decimalvärden.

Så allmän uppfattning är att få körtidsfel 13 av typfel.

Men låt oss se vad som händer när vi kör den här koden.

Wow!!! Vi fick värdena 59 & 85.

Detta beror på att VBA kommer att konvertera decimalvärdet 58,85 till närmaste helvärde och även om siffror är inneslutna med dubbla citat ändras det bara till helvärdet.