Como corregir error de compilación al ejecutar macros en Excel 2016?

Estoy iniciándome en el tema de programación de Excel 2016 con VB, y estoy intentando ejecutar dos macros, una para consultar y otra para actualizar datos de una hoja a otra; pero al ejecutarlas me arroja el error de compilación que dice "no se encuentra la variable de objeto o bloque with" y me señala la propiedad "Range".

Mi conocimiento es básico e ignoro porque sucede dicho error y no sé como corregir la falla, solicito su gran ayuda para solucionarlo.

Adjunto archivo y gracias por su tiempo.

https://drive.google.com/file/d/1TaU-qwtsvbiqf6_zxs-3pYwaK2aDS2lw/view?usp=sharing 

1 respuesta

Respuesta
1

Tu código tiene bastantes errores, el que te causa el error que mencionas se corrige borrando esta línea Dim h1 As Sheets, eso hará funcionar la macro solo que el error ahora lo tendrás en esta línea

Set h1 = Sheets("hjVentas") quiere decir que no has creado una hoja con ese nombre

Buen día James Bond!

Gracias por tu atención, seguí tu  consejo y tal como lo mencionas ahora me aparece el error en la siguiente línea; he revisado el nombre de la hoja en el VB y esta correcto, pues estoy refiriéndome a a la hoja ("DatosVendedor") por medio del nombre interno  hjVentas. Entonces no comprendo el origen del error.  Si te es posible, me gustaría pedirte amablemente que me explicaras con más detalle como corregir los errores que has identificado para evitarlos en el futuro. 

Gracias por tu ayuda y buen inicio de semana.

Al momento de usar el comando set para usar hojas el nombre que debes usar es el nombre que aparece en la pestaña no el nombre interno la línea debe quedar así

Set h1 = Sheets("datosvendedor") en vez de Set h1 = Sheets("hjventas")

Otra cosa es mucho mejor crear tablas insertadas que usar tablas simples, las ventajas son muchas para empezar la programación se simplifica bastante y no tienes que hacer referencia a hojas, ya que la tabla tiene un nombre único con el que puede llamarse desde cualquier hoja del libro usando la instrucción set o range

Ok. Yo había elegido el nombre interno por si alguna vez se cambiaba el nombre a la etiqueta para que no afectará la macro, pero usar tablas insertadas me parece una buena idea. 

Últimas dos dudas sobre lo que estoy haciendo mal o me falta por hacer :

He agregado un contador para que me liste todas las coincidencias en relación al código de consulta, pero creo que lo estoy haciendo mal porque no me da el resultado esperado.

1.- Si el vendedor tiene 16 coincidencias, ¿Por qué al ejecutar la macro solo me muestra una fila?.

2.- Cuando presiono el botón actualizar me manda el mensaje de que se han realizado los cambios; pero en la hoja de origen no se reflejan nada, ¿Por qué?

Una vez más gracias por tu ayuda :)

También he observado que al hacer la consulta omite la primera fila con datos y me muestra el segundo registro :(

Eso es porque la programación de búsqueda que tienes no es la adecuada, se ocupa una combinación de contar. Si, match y set, te paso un ejemplo de como seria la programación simplificada de tu programación, veras que en vez de usar hojas uso como referencia el nombre de las tablas, ve la programación y notaras que con menos líneas se llega al mismo resultado, por cierto mis macros se activan con los botones que tienes en la hoja

 https://1drv.ms/x/s!Aqt18sdMf2xXkl-7LxWhstcG1iwg?e=CZ5x9D 

¡Gracias! 

Es sorprendente ver como con unas pocas líneas puedes logra el objetivo y es evidente tu amplia experiencia en este tema, felicidades!

Me gustaría pedirte  de favor que me enseñaras con este mismo ejemplo a crear una conexión entre dos archivos,  me seria muy útil aprender a dividir este mismo archivo  en  libro1 con la hoja (""Principal") y el libro2 con la hoja ("DatosVendedor") para consultar y actualizar la información desde otro equipo diferente al mio. 

Haré la pregunta personalizada y te aviso en cuanto la publique para que me ayudes por favor con la conexión en cuanto puedas, gracias por tu apoyo y por compartir tus conocimientos :).  

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas