Napaka neusklajenosti tipa Napaka ali jo lahko imenujemo tudi kot koda napake 13, se pojavi, ko spremenljivki dodelimo vrednost, ki ni njenega podatkovnega tipa, na primer, če spremenljivki celoštevilskega podatkovnega tipa damo decimalno ali dolgo vrednost, bomo naletimo na to napako neusklajenosti tipa, ko zaženemo kodo, ki je prikazana kot koda napake 13.
Kaj je napaka neujemanja vrste VBA?
Napaka VBA v obliki neusklajenosti v Excelu je vrsta »Napake med izvajanjem« in je napaka številka 13 v tej kategoriji.
Za začetek učenja v VBA in za začetnike je težko najti napako, ki jo povzročajo kode VBA. Ne pozabite, da VBA ne povzroča napake. Namesto tega samo poudarjamo svoje napake med pisanjem kode.
Ponavadi deklariramo spremenljivke in jim dodelimo podatkovne tipe. Ko tem spremenljivkam dodelimo vrednost, se moramo spomniti, katere podatke lahko vsebujejo. Če dodeljena vrednost ni v skladu s podatkovnim tipom, bomo dobili “Napaka časa izvajanja 13: Neujemanje tipa”.

Kako popraviti napako med izvajanjem vrste VBA zaradi neusklajenosti 13?
Oglejmo si nekaj primerov za razumevanje te napake neujemanja vrste VBA.
Neujemanje tipa VBA - primer # 1
Na primer, poglejte spodnjo kodo VBA.
Koda:
Sub Type_MisMatch_Example1 () Dim k As Byte k = "Hiii" MsgBox k End Sub

Spremenljivko "k" sem razglasil za bajt.
To pomeni, da lahko spremenljivka "k" vsebuje vrednosti od 0 do 255. Toda v naslednji vrstici sem vrednost za spremenljivko "k" dodelil kot "Hiii".
Jasno je, da podatkovni tip ne more vsebovati vrednosti besedila, zato gre za napako Type Mismatch.

Neujemanje tipa VBA - primer # 2
Zdaj pa si oglejte še en primer z drugo vrsto podatkov. Poglejte spodnjo kodo.
Koda:
Sub Type_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub

Spremenljivko "x" smo razglasili za logično.
Logična vrednost je podatkovni tip, ki lahko vsebuje vrednost TRUE ali FALSE.
V zgornji kodi smo dodelili vrednost 4556, ki ni v skladu z vrednostmi podatkovnega tipa TRUE ali FALSE.
Ko zaženemo to kodo, bi pričakovali napako neusklajenosti tipa, vendar poglejte, kaj se zgodi, ko zaženemo to kodo.

Verjetno se sprašujete, zakaj to ni napaka 13 časa napake pri neusklajenosti vrste
Razlog za to je, da excel obravnava vse številke kot TRUE razen nič. Ničelna vrednost bo obravnavana kot FALSE. Zato smo rezultat dobili TRUE namesto napake.
Zdaj poglejte, z besedilom bom dodelil številčno vrednost.
Koda:
Sub Type_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub

To bo zagotovo povzročilo napako med izvajanjem 13: Vnesite neusklajenost.

Neujemanje tipa VBA - primer # 3
Zdaj si oglejte spodnjo kodo za ta primer.
Koda:
Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub

Spremenljivka "x" je celoštevilčni podatkovni tip, "y" pa je nizni podatkovni tip.
X = 45 in y = 2019 januar
V okno za sporočilo sem dodal x + y.
Toda to ni popolna koda, ker ne moremo dodajati številk z besedilnimi nizi. Naleteli bomo na napako med izvajanjem 13.

Neujemanje tipa VBA - primer # 4
Izjemni primeri
V nekaterih primerih excel odpusti napačne podatke, dodeljene spremenljivemu tipu podatkov. Na primer, poglejte spodnjo kodo.
Koda:
Sub Type_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58,85 y = "85" MsgBox x & vbNewLine & y End Sub

Dve deklarirani spremenljivki sta "x" in "y."
Za to spremenljivko je dodeljena vrsta podatkov »Long«.
Dolg podatkovni tip sprejema samo celotna števila, ne pa tudi decimalnih vrednosti.
Torej je splošno zaznavanje, da dobimo napako pri času izvajanja napake neusklajenosti tipa.
Pa poglejmo, kaj se zgodi, ko zaženemo to kodo.

Vau !!! Dobili smo vrednosti 59 in 85.
To je zato, ker bo VBA pretvoril decimalno vrednost 58,85 v najbližjo celoštevilčno vrednost in čeprav so številke zaprte z dvojnimi narekovaji, se pretvori samo v celoštevilčno vrednost.