Fel i VBA-fel (typ) - Hur fixar man körtidsfel 13?

Innehållsförteckning

Fel i typfel 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 tillhör dess datatyp, till exempel om vi ger ett decimal- eller långt värde till en heltal datatypvariabel stöter på detta fel i typavvikelse när vi kör koden som visas som felkod 13.

Vad är fel i VBA-typavvikelse?

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 lärandet i VBA och för nybörjare är det svårt att hitta felet som kastas av VBA-koderna. Kom ihåg att VBA inte kastar något fel. Snarare markerar det bara våra misstag när vi skriver koden.

Vi deklarerar vanligtvis variabler och tilldelar datatyper till den. 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.

VBA-typavvikelse - Exempel nr 1

Titta till exempel på 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 koden ovan har vi tilldelat värdet 4556, vilket inte är enligt datatypens värden 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 kasta Run Time Error 13: Type Mismatch.

VBA-typmatchning - exempel # 3

Titta nu på nedanstående kod för detta exempel.

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. Titta till exempel på koden nedan.

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 heltalsvärde, och även om siffrorna är inneslutna med dubbla citat ändras det bara till heltalsvärdet.

Intressanta artiklar...