Cómo corregir un error de compilación VBA: tipo definido por el usuario no definido (VIDEO)

Error del compilador: tipo definido por el usuario no definido

¿Te sientas mirando este error en tu pantalla de VBA y te sientes frustrado? No te preocupes, lo solucionaremos.

Pero antes de profundizar en la causa y la solución para corregir este error, comprendamos el procedimiento adecuado para usar un objeto en nuestro código. Facilitará el proceso de depuración.

Para este ejemplo, veamos un objeto Dictionary.

Un DICCIONARIO es un objeto similar al objeto VBA COLLECTION con las siguientes diferencias:

  1. Los valores de las claves se pueden actualizar o cambiar más adelante
  2. El valor de la clave/elemento se puede verificar fácilmente para verificar su existencia sin revisar todos los elementos por completo. Esto también ayuda a recuperar valores fácilmente.

Si es un principiante, imagine que este objeto es un diccionario en tiempo real donde las claves son las palabras y los elementos son las respectivas definiciones. Como en un diccionario, en el objeto VBA no tenemos que revisar todas las claves para encontrar el valor de una clave específica.

Y al igual que cualquier otro objeto en VBA, podemos usar un objeto de diccionario agregando la referencia correspondiente a través del menú Herramientas. La declaración y definición de objetos se puede hacer a través de temprano o encuadernación tardía métodos para la conveniencia del desarrollador.

El error en el titulo es uno error de tiempo de compilacion encontrado al compilar el código.

Analice el significado y la «CAUSA RAÍZ» del error:

Dividamos y leamos el error para entenderlo mejor.

Tipo definido por el usuario | no definida

Primero tratemos de entender que encontramos el error porque hay algo

no definida”.

Una posible razón por la que se produce el error es que está utilizando el método de enlace anticipado para declarar y definir el objeto, pero no se ha agregado la credencial requerida.

Consulte el código de muestra a continuación para comprender la diferencia entre el enlace anticipado y tardío.

Enlace tardío:

' Create a dictionary object using the late binding method.
    Dim obdict As Object
    Set obdict = CreateObject("Scripting.Dictionary")

Enlace temprano:

' Create a dictionary object using the early binding method.
    Dim obdict As New Scripting.Dictionary

Solución:

Pruebe uno de los siguientes pasos para resolver el error:

Método 1

Tal vez VBA no entienda que definió el objeto. En VBA, debe agregar la referencia respectiva para el objeto para indicarle al idioma que lo ha definido correctamente.

  1. Vaya al menú Herramientas->Referencias
  2. Seleccione la biblioteca «Microsoft Scripting Runtime». (Esto varía según el objeto utilizado. Lo mismo aquí objeto de diccionario se tiene en cuenta para la explicación
  3. Haga clic en el botón «Aceptar» y cierre el cuadro de diálogo
  4. Ahora puede compilar el código y ver que el error ya no aparece
Lista de referencia de Microsoft Scripting Runtime seleccionada

Nota: Esto es todo NO obligatorio si sigue el método de «enlace tardío».

Método 2

Utilice el método de enlace tardío donde primero declara un objeto genérico y luego define el tipo. No se requiere referencia para esto.

Sintaxis:

Dim <variable> As Object

Set <variable> = CreateObject("Scripting.Dictionary")

Ejemplo para un objeto de hoja de cálculo de Excel:

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

Ejemplo para un objeto de diccionario:

'Example of creating a dictionary object

Dim odict As Object

Set odict = CreateObject("Scripting.Dictionary")

Vista previa de vídeo

El video a continuación le muestra cómo corregir el error utilizando cualquiera de los dos métodos anteriores.

Su Calificación Nos Ayuda a Mejorar