Chyba nezhody typu VBA (príklady) Ako opraviť chybu 13 za chodu?

Chyba nezhody typu alebo ju môžeme nazvať aj ako Kód chyby 13, nastane, keď premennej, ktorá nie je jej dátového typu, priradíme hodnotu, napríklad ak poskytneme desatinnú alebo dlhú hodnotu celočíselnej premennej dátového typu narazíme na túto chybu nesúladu typov, keď spustíme kód, ktorý sa zobrazuje ako chybový kód 13.

Čo je chyba nesúladu typov VBA?

Chyba nesúladu typu VBA v programe Excel je typom „chyby pri spustení“ a je to chyba číslo 13 v tejto kategórii.

Ak chcete začať s učením vo VBA a pre začiatočníkov, je ťažké nájsť chybu spôsobenú kódmi VBA. Pamätajte, že VBA nehádže chybu. Ide iba o zvýraznenie našich chýb pri písaní kódu.

Zvyčajne deklarujeme premenné a priraďujeme k nim dátové typy. Keď týmto premenným priradíme hodnotu, musíme si uvedomiť, aký druh údajov môže obsahovať. Ak priradená hodnota nie je podľa dátového typu, zobrazí sa „Chyba času 13: Nesúlad typu“.

Ako opraviť chybu 13 v prípade nesúladu typu VBA?

Pozrime sa na niekoľko príkladov na pochopenie tejto chyby nesúladu typov VBA.

Nezhoda typu VBA - príklad č

Napríklad sa pozrite na nižšie uvedený kód VBA.

Kód:

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

Premennú „k“ som deklaroval ako Byte.

To znamená, že premenná „k“ môže obsahovať hodnoty od 0 do 255. V nasledujúcom riadku som však priradil hodnotu premennej „k“ ako „Hiii“.

Je veľmi zrejmé, že údajový typ nemôže obsahovať hodnotu textu, takže tu prichádza chyba v nesúlade typov.

Nezhoda typu VBA - príklad č. 2

Teraz sa pozrite na ďalší príklad s iným dátovým typom. Pozrite sa na nasledujúci kód.

Kód:

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

Premennú „x“ sme deklarovali ako Boolean.

Boolean je dátový typ, ktorý môže obsahovať hodnotu TRUE alebo FALSE.

Vo vyššie uvedenom kóde sme priradili hodnotu 4556, čo nie je podľa hodnôt dátového typu TRUE alebo FALSE.

Keď spustíme tento kód, očakávali by ste chybu nesúladu typov, ale uvidíte, čo sa stane, keď spustíme tento kód.

Určite si kladiete otázku, prečo to nie je chyba chyby behu 13 chyby nezhody typu.

Dôvodom je to, že program Excel zaobchádza so všetkými číslami ako s TRUE, okrem nuly. S nulovou hodnotou sa bude zaobchádzať ako s FALSE. Preto sme namiesto chyby dostali výsledok ako TRUE.

Teraz uvidíte, priradím číselnú hodnotu s textom.

Kód:

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

To určite spôsobí chybu 13: Nesúlad typu.

Nezhoda typu VBA - príklad č. 3

Teraz sa pozrite na nižšie uvedený kód tohto príkladu.

Kód:

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

Premenná „x“ je celočíselný údajový typ a „y“ je reťazcový údajový typ.

X = 45 a y = 2019 január

Do okna správy som pridal x + y.

Ale to nie je dokonalý kód, pretože nemôžeme pridávať čísla pomocou textov reťazcov. Stretneme sa s Run Time Error 13.

Nezhoda typu VBA - príklad č. 4

Výnimočné prípady

Existujú situácie, kedy program Excel odpustí nesprávne údaje priradené variabilnému údajovému typu. Napríklad si pozrite nasledujúci 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

Dve deklarované premenné sú „x“ a „y“.

Pre túto premennú je priradený dátový typ „Long“.

Dlhý dátový typ akceptuje iba celé čísla, nie desatinné hodnoty.

Všeobecné vnímanie je teda dostať chybu chodu 13 chyby nesúladu typu.

Pozrime sa však, čo sa stane, keď spustíme tento kód.

Wow!!! Získali sme hodnoty ako 59 a 85.

Je to preto, že VBA prevedie desatinnú hodnotu 58,85 na najbližšiu celočíselnú hodnotu, a aj keď sú čísla uzavreté dvojitými úvodzovkami, prevedie sa iba na celočíselnú hodnotu.

Zaujímavé články...