Error de desajustament de tipus VBA (exemples) | Com es corregeix l’error 13 en temps d’execució?

Escriviu error de desajustament o també el podem anomenar com a codi d’error 13 que es produeix quan assignem un valor a una variable que no és del seu tipus de dades, per exemple, si proporcionem un valor decimal o llarg a una variable de tipus enter trobem aquest error de desajustament de tipus quan executem el codi que es mostra com a codi d'error 13.

Què és l’error de desajustament de tipus VBA?

L'error de desajustament de tipus VBA a excel és un tipus d '"error en temps d'execució" i és l'error número 13 d'aquesta categoria.

Per començar els aprenentatges a VBA i per a principiants, és difícil trobar l’error provocat pels codis VBA. Recordeu que VBA no genera cap error, sinó que només ressalta els nostres errors mentre escrivim el codi.

Normalment declarem variables i hi assignem tipus de dades. Quan assignem un valor a aquestes variables, hem de recordar quin tipus de dades pot contenir, si el valor assignat no és segons el tipus de dades, obtindrem "Error de temps d'execució 13: discrepància de tipus".

Com es corregeix l’error 13 en temps d’execució del desajustament del tipus VBA

Vegem alguns exemples per entendre aquest error de desajustament de tipus VBA.

Podeu descarregar aquesta plantilla Excel de desajustament de tipus VBA aquí: plantilla Excel de desajustament de tipus VBA

Discrepància del tipus VBA: exemple 1

Per obtenir un exemple, mireu el codi VBA següent.

Codi:

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

He declarat la variable "k" com a Byte.

Això significa que la variable "k" pot contenir valors de 0 a 255. Però a la línia següent, he assignat el valor de la variable "k" com a "Hiii".

És molt clar que el tipus de dades no pot contenir el valor d’un text, així que aquí apareix l’error de desajustament de tipus.

Discrepància del tipus VBA: exemple 2

Vegeu ara un exemple més amb un tipus de dades diferent. Mireu el codi següent.

Codi:

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

Hem declarat la variable "x" com a booleana.

Booleà és un tipus de dades que pot contenir el valor de TRUE o FALSE.

Al codi anterior, hem assignat un valor de 4556, que no és segons els valors del tipus de dades de TRUE o FALSE.

Quan executem aquest codi, esperareu un error de desajustament de tipus, però vegeu què passa quan executem aquest codi.

Us heu de preguntar per què això no provoca l’error 13 de temps d’execució de l’error de desajustament de tipus.

La raó d’això és que Excel tracta tots els números com a TRUE excepte zero. El valor zero es tractarà com a FALS. Per això, hem obtingut el resultat com a VERITAT en lloc d'un error.

Ara vegeu que assignaré un valor numèric amb text.

Codi:

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

Sens dubte, això provocarà l’error 13 del temps d’execució: Mismatch Type.

Discrepància del tipus VBA: exemple 3

Ara mireu el següent codi per a aquest exemple.

Codi:

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

La variable "x" és un tipus de dades sencera i "y" és un tipus de dades de cadena.

X = 45 i y = 2019 gen.

Al quadre de missatges, he afegit x + y.

Però aquest no és el codi perfecte perquè no podem afegir números amb textos de cadena. Ens trobarem amb l’error 13 de temps d’execució.

Discrepància del tipus VBA: exemple 4

Casos excepcionals

Hi ha situacions en què Excel perdona les dades incorrectes assignades al tipus de dades variables. Per obtenir un exemple, mireu el codi següent.

Codi:

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

Dues variables declarades són "x" i "y".

Per a aquesta variable, el tipus de dades assignat és "Llarg".

El tipus de dades llargs només accepta nombres enters, no valors decimals.

Per tant, la percepció general és obtenir l’error 13 de temps d’execució de l’error de desajustament de tipus.

Però vegem què passa quan executem aquest codi.

Vaja !!! Tenim els valors 59 i 85.

Això es deu al fet que VBA convertirà el valor decimal 58,85 al valor enter més proper i, tot i que els números estan inclosos entre cometes dobles, es converteix només al valor enter.