Pogreška neusklađenosti tipa VBA (primjeri) - Kako ispraviti pogrešku u radu tijekom izvođenja 13?

Pogreška neusklađenosti tipa, ili je možemo nazvati i kodom pogreške 13, javlja se kada varijabli dodijelimo vrijednost koja nije njezinog tipa podataka, na primjer, ako cjelobrojnoj varijabli tipa podataka pružimo decimalnu ili dugu vrijednost naići na ovu pogrešku neusklađenosti tipa kada pokrenemo kod koji je prikazan kao kôd pogreške 13.

Što je pogreška neusklađenosti tipa VBA?

Pogreška neusklađenosti tipa VBA u programu excel vrsta je "Pogreška vremena izvođenja" i to je pogreška broj 13 u ovoj kategoriji.

Za početak učenja u VBA i za početnike teško je pronaći pogrešku koju su stvorili VBA kodovi. Zapamtite, VBA ne donosi pogrešku. To je samo naglašavanje naših pogrešaka tijekom pisanja koda.

Obično deklariramo varijable i dodijeljujemo tipove podataka. Kad tim varijablama dodijelimo vrijednost, moramo se sjetiti kakve podatke ona može sadržavati. Ako dodijeljena vrijednost nije prema tipu podataka, dobit ćemo "Pogreška vremena izvođenja 13: Nepodudaranje tipa".

Kako ispraviti pogrešku pri izvršavanju VBA vrste neusklađenosti 13?

Pogledajmo nekoliko primjera kako bismo razumjeli ovu pogrešku VBA neusklađenosti tipa.

Nepodudaranje tipa VBA - Primjer # 1

Na primjer, pogledajte donji VBA kod.

Kodirati:

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

Varijablu "k" proglasio sam bajtom.

To znači da varijabla "k" može sadržavati vrijednosti od 0 do 255. Ali u sljedećem sam retku dodijelila vrijednost za varijablu "k" kao "Hiii".

Jasno je da tip podataka ne može sadržavati vrijednost teksta, pa dolazi do pogreške neusklađenosti tipa.

VBA neusklađenost tipa - Primjer # 2

Sada pogledajte još jedan primjer s drugom vrstom podataka. Pogledajte donji kod.

Kodirati:

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

Promjenjivu "x" proglasili smo logičkom.

Boolean je vrsta podataka koja može sadržavati vrijednost TRUE ili FALSE.

U gornjem kodu dodijelili smo vrijednost 4556, što nije prema vrijednostima tipa podataka TRUE ili FALSE.

Kada pokrenemo ovaj kôd, očekivali biste pogrešku neusklađenosti tipa, ali pogledajte što se događa kada pokrenemo ovaj kôd.

Sigurno se pitate zašto ovo nije pogreška vremena izvođenja 13 pogreške neusklađenosti tipa.

Razlog tome je što excel tretira sve brojeve kao ISTINE osim nule. Nulta vrijednost tretirat će se kao FALSE. Zato smo rezultat dobili TRUE umjesto pogreške.

Sad vidite, dodijelit ću numeričku vrijednost s tekstom.

Kodirati:

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

Ovo će definitivno baciti pogrešku vremena izvođenja 13: Nepodudaranje tipa.

VBA neusklađenost tipa - Primjer # 3

Sada, pogledajte donji kod za ovaj primjer.

Kodirati:

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

Varijabla "x" je vrsta podataka cijelog broja, a "y" vrsta podataka niza.

X = 45 i y = 2019. siječnja

U okvir za poruku dodao sam x + y.

Ali ovo nije savršen kod, jer ne možemo dodavati brojeve s tekstovima u nizu. Naići ćemo na pogrešku vremena izvođenja 13.

Nepodudaranje tipa VBA - primjer # 4

Izuzetni slučajevi

Postoje situacije u kojima Excel oprašta pogrešne podatke dodijeljene varijabilnom tipu podataka. Na primjer, pogledajte donji kod.

Kodirati:

Podvrsta_MisMatch_Example3 () Dim x Dužina Dim y Dužina x = 58,85 y = "85" MsgBox x & vbNewLine & y Kraj Sub

Dvije deklarirane varijable su "x" i "y."

Za ovu je varijablu dodijeljeni tip podataka "Long".

Dugi tip podataka prihvaća samo cijele brojeve, a ne decimalne vrijednosti.

Dakle, općenita je percepcija pogreške vremena izvođenja 13 pogreške neusklađenosti tipa.

Ali da vidimo što će se dogoditi kada pokrenemo ovaj kod.

Vau !!! Dobili smo vrijednosti 59 i 85.

To je zato što će VBA pretvoriti decimalnu vrijednost 58,85 u najbližu cjelobrojnu vrijednost, a iako su brojevi zatvoreni dvostrukim navodnicima, pretvara se samo u cjelobrojnu vrijednost.

Zanimljivi članci...