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

Tipo neatitikimas Klaida arba mes taip pat galime jį pavadinti klaidos kodu 13, kuris įvyksta, kai kintamajam priskiriame vertę, kuri nėra jo tipo duomenų, pavyzdžiui, jei sveiko skaičiaus duomenų tipo kintamajam pateiksime dešimtainę arba ilgąją reikšmę, tai atliksime susiduriame su šia 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. Greičiau tai tik pabrėžia mūsų klaidas rašant kodą.

Mes paprastai deklaruojame kintamuosius ir priskiriame jam duomenų tipus. Priskirdami vertę tiems kintamiesiems, turime prisiminti, kokius duomenis jie gali laikyti. Jei priskirta vertė neatitinka duomenų tipo, gausime „Run Time Error 13: Type Mismatch“.

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 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“ vertę 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 atsitiks, 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į. Nulinė vertė bus traktuojama kaip NETIESA. Taigi todėl mes gavome rezultatą kaip TIESA, o ne klaidą.

Dabar pažiūrėk, aš priskirsiu skaitinę vertę su tekstu.

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 As Integer Dim y As String x = 45 y = "2019 Jan" 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 pridedami prie dvigubų kabučių, vis tiek ji konvertuojama tik į sveiko skaičiaus vertę.

Įdomios straipsniai...