Error de falta de 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 que arrojan los códigos de VBA. Recuerde, VBA no arroja un error. Más bien, es simplemente resaltar nuestros errores al escribir el código.
Por lo general, 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 coincide con el tipo de datos, obtendremos "Error de tiempo de ejecución 13: No coinciden los tipos".

¿Cómo solucionar 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.
Discrepancia de tipo de VBA - Ejemplo n. ° 1
Por 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.
Booleano es un tipo de datos que puede contener el valor VERDADERO o FALSO.
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 de error de no 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 y "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. Por 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, se convierte solo en el valor entero.