Chyba neshody typu VBA (příklady) | Jak opravit chybu 13 při běhu?

Type mismatch Error nebo jej můžeme také nazvat jako Error Code 13 nastane, když proměnné přiřadíme hodnotu, která není jejího datového typu, například pokud celočíselné proměnné datového typu poskytneme desítkovou nebo dlouhou hodnotu narazíme na tuto chybu Neshoda typu, když spustíme kód, který je zobrazen jako Kód chyby 13.

Co je chyba neshody typu VBA?

Chyba neshody typu VBA v aplikaci Excel je typem „chyby běhu“ a jedná se o chybu číslo 13 v této kategorii.

Chcete-li začít učení ve VBA a pro začátečníky, je těžké najít chybu vyvolanou kódy VBA. Nezapomeňte, že VBA nehází chybu, ale pouze zdůrazňuje naše chyby při psaní kódu.

Obvykle deklarujeme proměnné a přiřazujeme k nim datové typy. Když těmto proměnným přiřadíme hodnotu, musíme si pamatovat, jaký druh dat může obsahovat, pokud přiřazená hodnota není podle datového typu, dostaneme „Run Time Error 13: Type Mismatch“.

Jak opravit chybu 13 při běhu VBA Type Mismatch?

Podívejme se na několik příkladů k pochopení této chyby nesouladu typu VBA.

Tuto šablonu Excel pro nesoulad typů VBA si můžete stáhnout zde - Šablona Excel pro nesoulad typů VBA

Neshoda typu VBA - příklad č. 1

Například se podívejte na níže uvedený kód VBA.

Kód:

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

Proměnnou „k“ jsem deklaroval jako Byte.

To znamená, že proměnná „k“ může obsahovat hodnoty od 0 do 255. V dalším řádku jsem ale proměnné „k“ přidělil hodnotu „Hiii“.

Je velmi jasné, že datový typ nemůže obsahovat hodnotu textu, proto přichází chyba Neshoda typu.

Neshoda typu VBA - příklad č. 2

Nyní se podívejme na jeden další příklad s jiným datovým typem. Podívejte se na níže uvedený kód.

Kód:

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

Proměnnou „x“ jsme deklarovali jako Boolean.

Boolean je datový typ, který může obsahovat hodnotu TRUE nebo FALSE.

Ve výše uvedeném kódu jsme přiřadili hodnotu 4556, což není podle hodnot datového typu TRUE nebo FALSE.

Když spustíme tento kód, očekávali byste chybu neshody typu, ale uvidíte, co se stane, když spustíme tento kód.

Musíte se divit, proč to nedává chybu běhu 13 chyby neshody typu.

Důvodem je to, že aplikace Excel zachází se všemi čísly jako s TRUE, kromě nuly. S nulovou hodnotou se bude zacházet jako s FALSE. Proto jsme místo chyby dostali výsledek jako TRUE.

Nyní uvidíte, že přiřadím číselnou hodnotu s textem.

Kód:

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

To rozhodně vyvolá Chyba doby běhu 13: Neshoda typu.

Neshoda typu VBA - příklad č. 3

Nyní se podívejte na níže uvedený kód pro tento příklad.

Kód:

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

Proměnná „x“ je celočíselný datový typ a „y“ je datový typ řetězce.

X = 45 a y = 2019 leden

V okně se zprávou jsem přidal x + y.

Ale to není dokonalý kód, protože nemůžeme přidávat čísla pomocí textů řetězců. Setkáme se s chybou 13.

Neshoda typu VBA - příklad č. 4

Výjimečné případy

Existují situace, kdy aplikace Excel odpustí nesprávná data přiřazená proměnnému datovému typu. Například se podívejte na níže uvedený kód.

Kód:

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

Dvě deklarované proměnné jsou „x“ a „y“.

Pro tuto proměnnou je přiřazený datový typ „Long“.

Dlouhý datový typ přijímá pouze celá čísla, nikoli desetinná čísla.

Obecným vnímáním je tedy dostat chybu běhu 13 chyby neshody typu.

Ale podívejme se, co se stane, když spustíme tento kód.

Páni!!! Získali jsme hodnoty 59 a 85.

Je to proto, že VBA převede desítkovou hodnotu 58,85 na nejbližší celočíselnou hodnotu a přestože jsou čísla uzavřena dvojitými uvozovkami, převede se pouze na celočíselnou hodnotu.