VBA típusú eltérési hiba (példák) - Hogyan lehet kijavítani a 13-as futási hibát?

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.

érdekes cikkek...