Type mismatch Error, vagy hívhatjuk 13-as hibakódnak is, amikor egy olyan változóhoz rendelünk értéket, amely nem annak adattípusa, például ha egy egész adattípusú változóhoz tizedes vagy hosszú értéket adunk meg, akkor amikor a 13. hibakódként megjelenő kódot futtatjuk, akkor találkozunk ezzel a Type mismatch hibával.
Mi az a VBA típusú eltérési hiba?
A VBA Type Mismatch Error az excelben a „Run Time Error” típusa, és ebben a kategóriában a 13. számú hiba.
A VBA és kezdők számára történő tanulás megkezdéséhez nehéz megtalálni a VBA kódok által dobott hibát. Ne feledje, hogy a VBA nem dob hibát. Inkább csak a kódírás közbeni hibáink kiemelésére szolgál.
Általában változókat deklarálunk, és adattípusokat rendelünk hozzá. Amikor értéket rendelünk ezekhez a változókhoz, emlékeznünk kell arra, hogy milyen adatok tárolhatók. Ha a hozzárendelt érték nem egyezik meg az adattípussal, akkor a „Run Time Error 13: Type Mismatch” üzenetet kapjuk.

Hogyan javítható a VBA Type Mismatch futásidejű 13. hiba?
Nézzünk meg néhány példát ennek a VBA típusú eltérési hibának a megértéséhez.
VBA típusú eltérés - 1. példa
Nézze meg például az alábbi VBA kódot.
Kód:
Altípus_MisMatch_Példa1 () Dim k As Byte k = "Hiii" MsgBox k End Sub

A „k” változót Byte-ként deklaráltam.
Ez azt jelenti, hogy a „k” változó 0 és 255 közötti értékeket képes megtartani. De a következő sorban a „k” változó értékét „Hiii” néven rendeltem el.
Nagyon világos, hogy az adattípus nem képes megtartani a szöveg értékét, ezért itt jön a Type Mismatch Error.

VBA típusú eltérés - 2. példa
Most nézzen meg még egy példát egy másik adattípussal. Nézze meg az alábbi kódot.
Kód:
Altípus_MisMatch_Példa2 () Dim x As Boolean x = 4556 MsgBox x End Sub

Az „x” változót logikai értéknek deklaráltuk.
A Boolean olyan adattípus, amely az IGAZ vagy HAMIS értékét képes tárolni.
A fenti kódban 4556 értéket rendeltünk, amely nem felel meg a TRUE vagy FALSE adattípus értékeinek.
Amikor futtatjuk ezt a kódot, számíthat arra, hogy hibás a típus, de nézze meg, mi történik, amikor futtatjuk a kódot.

Biztosan kíváncsi arra, hogy ez miért nem adja meg a 13. futási hibát, a típus eltérési hibáját
Ennek oka az, hogy az Excel az összes számot IGAZként kezeli, a nulla kivételével. A nulla érték FALSE lesz. Ezért kaptuk az eredményt IGAZként hiba helyett.
Most lásd, hozzárendelek egy számértéket szöveggel.
Kód:
Altípus_MisMatch_Példa2 () Dim x As Boolean x = "4556a" MsgBox x End Sub

Ez mindenképpen dobja a 13. futási hibát: Írja be a hibát.

VBA típusú eltérés - 3. példa
Most nézze meg a példa alábbi kódját.
Kód:
Altípus_MisMatch_Példa4 () Dim x egész szám Dim y As karakterlánc x = 45 y = "2019 Jan" MsgBox x + y End Sub

Az „x” változó egész adattípus, az „y” pedig karakterlánc adattípus.
X = 45 és y = 2019 jan.
Az üzenet mezőbe felvettem x + y-t.
De ez nem a tökéletes kód, mert nem adhatunk hozzá számokat string szöveggel. A 13. futási hibával találkozunk.

VBA típusú eltérés - 4. példa
Kivételes esetek
Vannak olyan helyzetek, amikor az Excel megbocsátja a változó adattípushoz rendelt rossz adatokat. Nézze meg például az alábbi kódot.
Kód:
Altípus_MisMatch_Példa3 () Dim x Olyan hosszú Dim y As Long x = 58,85 y = "85" MsgBox x & vbNewLine & y End Sub

Két deklarált változó az „x” és az „y”.
Ennél a változónál a hozzárendelt adattípus „Long”.
A hosszú adattípus csak egész számokat fogad el, a tizedes értékeket nem.
Tehát az általános felfogás az, hogy megkapja a 13. futási hibát a típus eltérési hibájáról.
De nézzük meg, mi történik, amikor futtatjuk ezt a kódot.

Azta!!! 59 és 85 értékeket kaptunk.
Ez azért van, mert a VBA az 58.85 decimális értéket a legközelebbi egész számra konvertálja, és bár a számokat dupla idézőjelek mellékelik, mégis csak az egész értékre konvertál.