Con varios hilos por aquí de errores crudos de VB6/VBA sin mucho contexto, una guía rápida de los Runtime error más comunes y qué suelen significar de verdad, para no tener que buscarlos uno a uno cada vez:
Error 429 «ActiveX component can't create object». Casi siempre significa que el componente/librería que intentas instanciar (CreateObject("Algo.Application")) no está registrado en el sistema donde se ejecuta, aunque sí lo estuviera en el equipo donde lo desarrollaste. Muy típico al mover una aplicación VB6 a otro PC sin instalar las dependencias (controles OCX, DLLs de terceros) que usó el desarrollo original.
Error 5 «Invalid procedure call or argument». Le estás pasando un valor que la función no acepta, muy habitual con índices de array fuera de rango o parámetros vacíos donde se esperaba un número.
Error 9 «Subscript out of range». Estás accediendo a una posición de un array que no existe, casi siempre por un ReDim mal dimensionado o un bucle que se pasa del límite real del array.
Error 91 «Object variable or With block variable not set». Intentas usar un objeto que declaraste pero nunca inicializaste con Set, o que quedó en Nothing después de liberarlo en algún punto anterior.
Error 3021 «No current record» (con Recordsets de DAO/ADO). Intentas leer datos de un Recordset vacío o que ya llegó al final (EOF), sin haber comprobado antes si realmente hay una fila válida en la posición actual.
El truco general para diagnosticar cualquiera de estos más rápido: activa On Error Resume Next temporalmente solo alrededor de la línea sospechosa (nunca en toda la función de golpe, eso solo esconde el problema), y consulta inmediatamente después Err.Number y Err.Description para ver exactamente qué falló antes de que el error genérico se pierda.
David Carrero
Los que más se repiten en cualquier aplicación VB6/VBA con algo de tiempo, de más a menos frecuente en mi experiencia:
Error 91 - Object variable or With block variable not set: intentas usar un objeto que declaraste pero nunca inicializaste con Set, o que se ha quedado a Nothing en algún punto anterior. Casi siempre la causa es un Set objeto = Nothing puesto demasiado pronto, o simplemente olvidar el Set inicial.
Error 438 - Object doesn't support this property or method: estás llamando a un método/propiedad que no existe en el tipo de objeto que realmente tienes en tiempo de ejecución, aunque el compilador no se queje (típico con Object genérico o Variant, donde la comprobación de tipos se pierde hasta la ejecución).
Error 13 - Type mismatch: intentas usar un valor de un tipo donde se espera otro, muy habitual al mezclar String y numérico sin conversión explícita, o al recibir un valor Null de una base de datos donde esperabas un número.
Error 6 - Overflow: casi siempre por usar Integer (que en VB6 solo llega hasta 32.767) en vez de Long para algo que puede crecer más de lo esperado. Este es de los más traicioneros porque funciona perfecto durante meses hasta que el valor real supera ese límite.
Error 380 - Invalid property value: casi siempre al asignar un valor fuera de rango a una propiedad de un control (por ejemplo, un índice de ListIndex que no existe en ese momento en el control).
Ivan