VBA tipo neatitikimo klaida (pavyzdžiai) Kaip išspręsti 13 vykdymo laiko klaidą?

Tipo neatitikimas Klaida arba mes taip pat galime vadinti klaidos kodu 13, kuris įvyksta, kai priskiriame reikšmę kintamajam, kuris nėra jo tipo duomenų, pavyzdžiui, jei sveiko skaičiaus duomenų tipo kintamajam pateiksime dešimtainę arba ilgą reikšmę, tai atliksime susiduriame su šia tipo neatitikimo klaida, kai vykdome kodą, kuris rodomas kaip klaidos kodas 13.

Kas yra VBA tipo neatitikimo klaida?

VBA tipo neatitikimo klaida programoje „Excel“ yra „Run Time Error“ tipas ir tai yra šios kategorijos klaidos numeris 13.

Norėdami pradėti mokytis VBA ir pradedantiesiems, sunku rasti klaidą, kurią išmeta VBA kodai. Atminkite, kad VBA nemeta klaidos, o tiesiog pabrėžia mūsų klaidas rašant kodą.

Paprastai deklaruojame kintamuosius ir priskiriame jam duomenų tipus. Priskirdami vertę tiems kintamiesiems, turime prisiminti, kokius duomenis jie gali laikyti, jei priskirta reikšmė neatitinka duomenų tipo, gausime „Vykdymo laiko klaida 13: neatitikimas“.

Kaip išspręsti VBA tipo neatitikimo vykdymo laiko klaidą 13?

Pažiūrėkime keletą pavyzdžių, kaip suprasti šią VBA tipo neatitikimo klaidą.

Šį VBA tipo neatitikimo „Excel“ šabloną galite atsisiųsti čia - VBA tipo neatitikimo „Excel“ šablonas

VBA tipo neatitikimas - 1 pavyzdys

Pavyzdžiui, pažvelkite į žemiau esantį VBA kodą.

Kodas:

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

Aš paskelbiau kintamąjį „k“ kaip baitą.

Tai reiškia, kad kintamasis „k“ gali turėti reikšmes nuo 0 iki 255. Tačiau kitoje eilutėje kintamojo „k“ reikšmę priskyriau „Hiii“.

Labai aišku, kad duomenų tipas negali išlaikyti teksto vertės, todėl čia atsiranda tipo neatitikimo klaida.

VBA tipo neatitikimas - 2 pavyzdys

Dabar pažvelkite į dar vieną pavyzdį su kitu duomenų tipu. Pažvelkite į žemiau esantį kodą.

Kodas:

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

Kintamąjį „x“ paskelbėme loginiu.

Boolean yra duomenų tipas, kuriame gali būti įrašyta TRUE arba FALSE reikšmė.

Ankstesniame kode mes priskyrėme 4556 vertę, kuri neatitinka TRUE ar FALSE duomenų tipo verčių.

Kai vykdysime šį kodą, galite tikėtis tipo neatitikimo klaidos, bet pažiūrėkite, kas nutiks, kai paleidsime šį kodą.

Turite žinoti, kodėl tai nesuteikia 13 vykdymo laiko klaidos tipo neatitikimo klaidos.

To priežastis yra ta, kad „Excel“ visus skaičius traktuoja kaip TIESĄ, išskyrus nulį. Nulio vertė bus traktuojama kaip NETIESA. Taigi todėl mes gavome rezultatą kaip TIESA, o ne klaidą.

Dabar pamatysiu, kad su tekstu priskirsiu skaitinę vertę.

Kodas:

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

Tai tikrai sukels „Run Time Error 13“: „Type Mismatch“.

VBA tipo neatitikimas - 3 pavyzdys

Dabar pažiūrėkite į žemiau pateiktą šio pavyzdžio kodą.

Kodas:

 Potipis_MisMatch_Pavyzdys4 () Dim x kaip sveikasis skaičius x y String x = 45 y = "2019 sausis" MsgBox x + y End Sub 

Kintamasis „x“ yra sveikasis duomenų tipas, o „y“ - eilutės duomenų tipas.

X = 45 ir y = 2019 m. Sausio mėn.

Pranešimų laukelyje pridėjau x + y.

Bet tai nėra tobulas kodas, nes negalime pridėti skaičių su eilutės tekstais. Susidursime su „Run Time Error 13“.

VBA tipo neatitikimas - 4 pavyzdys

Išskirtiniai atvejai

Yra situacijų, kai „Excel“ atleidžia neteisingus duomenis, priskirtus kintamajam duomenų tipui. Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Kodas:

 Potipis_MisMatch_Pavyzdys3 () Dim x As Long Dim y As Long x = 58,85 y = "85" MsgBox x & vbNewLine & y End Sub 

Du deklaruoti kintamieji yra „x“ ir „y“.

Šiam kintamajam priskirtas duomenų tipas yra „Ilgas“.

Ilgas duomenų tipas priima tik sveikus skaičius, o ne dešimtaines reikšmes.

Taigi bendras supratimas yra gauti 13 tipo klaidų tipo vykdymo klaidą.

Bet pažiūrėkime, kas nutiks paleidus šį kodą.

Oho!!! Gavome vertes kaip 59 ir 85.

Taip yra todėl, kad VBA konvertuos dešimtainę vertę 58,85 į artimiausią sveikojo skaičiaus vertę ir, nors skaičiai yra pridedami prie dvigubų kabučių, vis tiek ji paverčiama tik sveikojo skaičiaus verte.


$config[zx-auto] not found$config[zx-overlay] not found