VBA neatbilstības kļūda (piemēri) | Kā novērst izpildlaika 13. kļūdu?
Tipa neatbilstības kļūda vai mēs to varam saukt arī par kļūdas kodu 13, kas rodas, piešķirot vērtību mainīgajam, kas nav tā tipa, piemēram, ja vesela skaitļa datu tipa mainīgajam norādām decimāldaļu vai garu vērtību, rodas šāda veida neatbilstības kļūda, palaižot kodu, kas tiek parādīts kā kļūdas kods 13.
Kas ir VBA tipa neatbilstības kļūda?
VBA tipa neatbilstības kļūda programmā Excel ir “Run Time Error” veids, un šajā kategorijā tā ir kļūda ar numuru 13.
Lai sāktu mācības VBA un iesācējiem, ir grūti atrast kļūdu, ko izmet VBA kodi. Atcerieties, ka VBA neizmet kļūdu, bet tikai izceļ mūsu kļūdas, rakstot kodu.
Mēs parasti deklarējam mainīgos un tam piešķiram datu tipus. Piešķirot vērtību šiem mainīgajiem lielumiem, mums jāatceras, kāda veida datus tā var glabāt, ja piešķirtā vērtība neatbilst datu tipam, mēs saņemsim “Run Time Error 13: Type Mismatch”.
Kā novērst VBA tipa neatbilstības izpildes laika kļūdu 13?
Apskatīsim dažus piemērus, lai izprastu šo VBA tipa neatbilstības kļūdu.
Jūs varat lejupielādēt šo VBA tipa neatbilstības veidni šeit - VBA tipa neatbilstības veidni ExcelVBA tipa neatbilstība - 1. piemērs
Piemēru skatiet zemāk redzamajā VBA kodā.
Kods:
Apakštipa_MisMatch_Piemērs1 () Dim k As baits k = "Hiii" MsgBox k Beigās Sub
Esmu deklarējis mainīgo “k” kā baitu.
Tas nozīmē, ka mainīgajam “k” var būt vērtības no 0 līdz 255. Bet nākamajā rindā mainīgā “k” vērtību esmu piešķīris kā “Hiii”.
Ir ļoti skaidrs, ka datu tips nespēj turēt teksta vērtību, tāpēc šeit parādās tipa neatbilstības kļūda.
VBA tipa neatbilstība - 2. piemērs
Tagad apskatiet vēl vienu piemēru ar citu datu tipu. Apskatiet zemāk esošo kodu.
Kods:
Apakšgrupa_MisMatch_Example2 () Dim x As Būla x = 4556 MsgBox x End Sub
Mēs esam deklarējuši mainīgo “x” kā Būla vērtību.
Būla skaitlis ir datu tips, kas satur vērtību TRUE vai FALSE.
Iepriekš minētajā kodā esam piešķīruši vērtību 4556, kas neatbilst datu veida vērtībām TRUE vai FALSE.
Kad palaidīsim šo kodu, jūs varētu sagaidīt kļūdas neatbilstību tipam, taču skatiet, kas notiek, palaižot šo kodu.
Jums ir jābrīnās, kāpēc tas nedod izpildes laika kļūdu 13 ar tipu neatbilstības kļūdu.
Iemesls tam ir, ka Excel visus skaitļus uzskata par PATIESI, izņemot nulli. Nulles vērtība tiks uzskatīta par FALSE. Tāpēc mēs kļūdas vietā saņēmām rezultātu kā PATIESI.
Tagad skatiet es piešķiršu skaitlisku vērtību ar tekstu.
Kods:
Apakšgrupa_MisMatch_Example2 () Dim x As Būla x = "4556a" MsgBox x End Sub
Tas noteikti iemetīs Run Time Error 13: Type Mismatch.
VBA tipa neatbilstība - 3. piemērs
Tagad skatiet šo piemēru zemāk esošajā kodā.
Kods:
Apakštipa_MisMatch_Example4 () Dim x kā vesels skaitlis Dim y As virkne x = 45 y = "2019 Jan" MsgBox x + y End Sub
Mainīgais “x” ir vesels skaitļa datu tips un “y” ir virknes datu tips.
X = 45 un y = 2019. gada janvāris
Ziņojumu lodziņā esmu pievienojis x + y.
Bet tas nav ideāls kods, jo mēs nevaram pievienot skaitļus ar virkņu tekstiem. Mēs sastapsim 13. darbības laika kļūdu.
VBA tipa neatbilstība - 4. piemērs
Izņēmuma gadījumi
Pastāv situācijas, kad Excel piedod nepareizus datus, kas piešķirti mainīgajam datu tipam. Piemēram, skatiet zemāk esošo kodu.
Kods:
Apakšgrupa_MisMatch_Piemērs3 () Dim x As Long Dim y As Long x = 58,85 y = "85" MsgBox x & vbNewLine & y End Sub
Divi deklarētie mainīgie ir “x” un “y”.
Šim mainīgajam piešķirtais datu tips ir “Long”.
Garš datu tips pieņem tikai veselus skaitļus, nevis decimāldaļas.
Tātad vispārējā uztvere ir iegūt izpildes laika kļūdu 13 par tipu neatbilstības kļūdu.
Bet redzēsim, kas notiek, palaižot šo kodu.
Oho !!! Mēs saņēmām vērtības kā 59 un 85.
Tas ir tāpēc, ka VBA pārvērš decimāldaļu 58,85 par tuvāko veselā skaitļa vērtību, un, lai arī skaitļi ir pievienoti ar pēdiņām, tas tomēr tiek pārvērsts tikai par veselu skaitli.