Error de discrepancia de tipo de VBA

Error de no coincidencia de tipos o también podemos llamarlo como Código de error 13 ocurre cuando asignamos un valor a una variable que no es de su tipo de datos, por ejemplo, si proporcionamos un valor decimal o largo a una variable de tipo de datos enteros, lo haremos encontramos este error de falta de coincidencia de tipos cuando ejecutamos el código que se muestra como Código de error 13.

¿Qué es el error de desajuste de tipo de VBA?

El error de desajuste de tipo de VBA en Excel es un tipo de "Error de tiempo de ejecución" y es el error número 13 en esta categoría.

Para comenzar los aprendizajes en VBA y para los principiantes, es difícil encontrar el error arrojado por los códigos de VBA. Recuerde que VBA no arroja un error, sino que solo resalta nuestros errores al escribir el código.

Normalmente declaramos variables y le asignamos tipos de datos. Cuando asignamos un valor a esas variables, debemos recordar qué tipo de datos pueden contener, si el valor asignado no es el que corresponde al tipo de datos, obtendremos “Error de tiempo de ejecución 13: No coinciden los tipos”.

¿Cómo corregir el error 13 en tiempo de ejecución de VBA Type Mismatch?

Veamos algunos ejemplos para comprender este error de discrepancia de tipo de VBA.

Puede descargar esta plantilla de Excel de desajuste de tipo de VBA aquí - Plantilla de Excel de desajuste de tipo de VBA

Discrepancia de tipo de VBA - Ejemplo n. ° 1

Para ver un ejemplo, mire el siguiente código VBA.

Código:

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

He declarado la variable "k" como Byte.

Esto significa que la variable "k" puede contener valores de 0 a 255. Pero en la siguiente línea, he asignado el valor de la variable "k" como "Hiii".

Está muy claro que el tipo de datos no puede contener el valor de un texto, por lo que aquí viene el error de falta de coincidencia de tipos.

Discrepancia de tipo de VBA - Ejemplo n. ° 2

Ahora eche un vistazo a un ejemplo más con un tipo de datos diferente. Mira el siguiente código.

Código:

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

Hemos declarado la variable "x" como booleana.

Boolean es un tipo de datos que puede contener el valor TRUE o FALSE.

En el código anterior, hemos asignado un valor de 4556, que no coincide con los valores de tipo de datos de TRUE o FALSE.

Cuando ejecutamos este código, esperaría un error de falta de coincidencia de tipos, pero vea qué sucede cuando ejecutamos este código.

Debe preguntarse por qué esto no es un error de tiempo de ejecución 13 del error de falta de coincidencia de tipos.

La razón de esto es que Excel trata todos los números como VERDADEROS excepto el cero. El valor cero se tratará como FALSO. Por eso obtuvimos el resultado como VERDADERO en lugar de un error.

Ahora mira, asignaré un valor numérico con texto.

Código:

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

Esto definitivamente arrojará el Error de tiempo de ejecución 13: No coinciden los tipos.

Discrepancia de tipo de VBA - Ejemplo n. ° 3

Ahora, mire el siguiente código para este ejemplo.

Código:

 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" es un tipo de datos entero e "y" es un tipo de datos de cadena.

X = 45 ey = 2019 Ene.

En el cuadro de mensaje, agregué x + y.

Pero este no es el código perfecto porque no podemos sumar números con textos de cadena. Encontraremos el error 13 de tiempo de ejecución.

Discrepancia de tipo de VBA - Ejemplo n. ° 4

Casos excepcionales

Hay situaciones en las que Excel perdona los datos incorrectos asignados al tipo de datos variables. Para ver un ejemplo, mire el siguiente código.

Código:

 Sub Type_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub 

Dos variables declaradas son "x" e "y".

Para esta variable, el tipo de datos asignado es "Long".

El tipo de datos largo acepta solo números enteros, no valores decimales.

Entonces, la percepción general es obtener el error 13 de tiempo de ejecución de error de desajuste de tipos.

Pero veamos qué sucede cuando ejecutamos este código.

¡¡¡Guau!!! Obtuvimos los valores 59 y 85.

Esto se debe a que VBA convertirá el valor decimal 58.85 al valor entero más cercano y, aunque los números están encerrados entre comillas dobles, todavía se convierte solo al valor entero.