VBA tüübi mittevastavuse viga (näited) Kuidas parandada käitusaja viga 13?

Tüübi mittevastavus Viga või võime seda nimetada ka tõrkekoodiks 13, mis ilmneb siis, kui määrame muutujale väärtuse, mis pole selle andmetüüp, näiteks kui anname täisarvu andmetüübi muutujale kümnendkoha või pika väärtuse ilmneb selle tüübi mittevastavuse tõrge, kui käivitame koodi, mis kuvatakse tõrkekoodina 13.

Mis on VBA tüübi mittevastavuse viga?

VBA tüüp Mismatch Error Excelis on tüüp „Run Time Error” ja see on selles kategoorias viga number 13.

VBA õppimise alustamiseks ja algajatele on raske leida VBA koodide visatud viga. Pidage meeles, et VBA ei viska viga, vaid lihtsalt tõstab meie vigu koodi kirjutamise ajal esile.

Tavaliselt deklareerime muutujad ja määrame sellele andmetüübid. Nendele muutujatele väärtuse määramisel peame meeles pidama, milliseid andmeid see mahutab. Kui määratud väärtus ei vasta andmetüübile, saame „Run Time Error 13: Type Mismatch”.

Kuidas parandada VBA tüübi mittevastavuse käituse viga 13?

Vaatame mõningaid näiteid selle VBA tüübi mittevastavuse vea mõistmiseks.

Selle VBA tüübi mittevastavuse Exceli malli saate alla laadida siit - VBA tüübi mittevastavuse Exceli mall

VBA tüübi mittevastavus - näide 1

Näite saamiseks vaadake allpool olevat VBA-koodi.

Kood:

 Alamtüüp_MisMatch_Example1 () Dim k As Bait k = "Hiii" MsgBox k End Sub 

Muutuja “k” olen kuulutanud baidiks.

See tähendab, et muutuja "k" mahutab väärtusi vahemikus 0 kuni 255. Kuid järgmisel real olen määranud muutuja "k" väärtuse "Hiii".

On väga selge, et andmetüüp ei saa hoida teksti väärtust, nii et siin tuleb tüüpiviga.

VBA tüübi mittevastavus - näide 2

Nüüd vaadake veel ühte erinevat tüüpi andmetega näidet. Vaadake allolevat koodi.

Kood:

 Alamtüüp_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub 

Oleme muutuja “x” deklareerinud loogikana.

Boolean on andmetüüp, mis mahutab väärtuse TRUE või FALSE.

Ülaltoodud koodis oleme määranud väärtuse 4556, mis ei vasta andmetüübi väärtustele TRUE või FALSE.

Selle koodi käivitamisel võite oodata tüübi mittevastavuse viga, kuid vaadake, mis juhtub selle koodi käivitamisel.

Peate kindlasti mõtlema, miks see ei anna käitamisaja viga 13 tüüpi mittevastavuse viga.

Selle põhjuseks on, et Excel käsitleb kõiki numbreid TÕENA, välja arvatud null. Nullväärtust käsitletakse kui VALE. Seetõttu saime vea asemel tulemuseks TÕENE.

Nüüd vaadake, määran tekstiga arvulise väärtuse.

Kood:

 Alamtüüp_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub 

See viskab kindlasti Run Run Error 13: Type Mismatch.

VBA tüübi mittevastavus - näide 3

Nüüd vaadake selle näite jaoks allpool olevat koodi.

Kood:

 Alamtüüp_MisMatch_Näide4 () Mõõt x täisarvu d y stringina x = 45 y = "2019 jaanuar" MsgBox x + y Lõpp alam 

Muutuja “x” on täisarvu andmetüüp ja “y” stringitüüp.

X = 45 ja y = 2019 jaanuar

Sõnumikasti olen lisanud x + y.

Kuid see pole ideaalne kood, sest me ei saa stringitekstidega numbreid lisada. Käivitusaja viga 13.

VBA tüübi mittevastavus - näide 4

Erakordsed juhtumid

On olukordi, kus Excel andestab muutuja andmetüübile omistatud valed andmed. Näite saamiseks vaadake allolevat koodi.

Kood:

 Alamtüüp_MisMatch_Näide3 () Dim x nii pikk Dim y nii pikk x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub 

Kaks deklareeritud muutujat on “x” ja “y”.

Selle muutuja jaoks on määratud andmetüübiks “Long”.

Pikk andmetüüp aktsepteerib ainult täisarvusid, mitte kümnendarvusid.

Nii et üldine arusaam on saada käitamisaja viga 13 tüübide mittevastavuse veast.

Kuid vaatame, mis juhtub, kui käivitame selle koodi.

Vau !!! Saime väärtused 59 ja 85.

Seda seetõttu, et VBA teisendab kümnendväärtuse 58,85 lähima täisarvu väärtuseks ja teisendab arvud, isegi kui need on topelt jutumärkidega, ainult täisarvuks.