Referenciar objetos sin activar hoja

23/12/2003 - 16:13 por Adriano DAmbra | Informe spam
Hola a todos, a todos los que programan en VBA Excel les debe haber pasado
que para acceder a un determinado rango o celda de una hoja, dicha hoja debe
estar activa. Esto es muy incómodo, ya que cuando uno desarrolla un código
extenson con muchos pasos, las pantallas titilan de manera insoportable para
la vista, y esto depende de la velocidad del procesador.
Yo solucioné precariamente este problema mostrando un UserForm de pantalla
completa y un HourGlass de puntero para que el usuario espere y no se maree
durante el proceso.
Según lo dicho.
¿Alguno de ustedes pudo referenciar a una celda desde otra hoja sin
activarla?

Saludos y Felices Fiestas.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
23/12/2003 - 16:27 | Informe spam
Usando VBA, normalmente _no_ es necesario seleccionar la hoja con cuyas celdas se quiere trabajar ni que dicha hoja sea la activa. Lo que sucede es que si el código lo ha generado el grabador de macros, dicho código será casi siempre muy ineficiente y se podrá mejorar mucho, pero sin ver el código es difícil que podamos decirte algo en concreto.

Sobre lo del parpadeo, es posible evitarlo poniendo

Application.ScreenUpdating = False

al principio del sub, y

Application.ScreenUpdating = True

al final, pero esto muchas veces no es necesario si el código no anda cambiando la selección de hojas y/o rangos.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Adriano D'Ambra" escribió en el mensaje news:
Hola a todos, a todos los que programan en VBA Excel les debe haber pasado
que para acceder a un determinado rango o celda de una hoja, dicha hoja debe
estar activa. Esto es muy incómodo, ya que cuando uno desarrolla un código
extenson con muchos pasos, las pantallas titilan de manera insoportable para
la vista, y esto depende de la velocidad del procesador.
Yo solucioné precariamente este problema mostrando un UserForm de pantalla
completa y un HourGlass de puntero para que el usuario espere y no se maree
durante el proceso.
Según lo dicho.
¿Alguno de ustedes pudo referenciar a una celda desde otra hoja sin
activarla?

Saludos y Felices Fiestas.


Respuesta Responder a este mensaje
#2 Adriano DAmbra
23/12/2003 - 16:42 | Informe spam
Ahh, muy bueno lo del parpadeo.
¿Pero no te da error por ejemplo en Hojas que han sido previamente ocultadas
si quieres referenciar a celdas de ella?

Saludos.


"Fernando Arroyo" escribió en el mensaje
news:
Usando VBA, normalmente _no_ es necesario seleccionar la hoja con cuyas
celdas se quiere trabajar ni que dicha hoja sea la activa. Lo que sucede es
que si el código lo ha generado el grabador de macros, dicho código será
casi siempre muy ineficiente y se podrá mejorar mucho, pero sin ver el
código es difícil que podamos decirte algo en concreto.

Sobre lo del parpadeo, es posible evitarlo poniendo

Application.ScreenUpdating = False

al principio del sub, y

Application.ScreenUpdating = True

al final, pero esto muchas veces no es necesario si el código no anda
cambiando la selección de hojas y/o rangos.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Adriano D'Ambra" escribió en el mensaje
news:
Hola a todos, a todos los que programan en VBA Excel les debe haber pasado
que para acceder a un determinado rango o celda de una hoja, dicha hoja


debe
estar activa. Esto es muy incómodo, ya que cuando uno desarrolla un código
extenson con muchos pasos, las pantallas titilan de manera insoportable


para
la vista, y esto depende de la velocidad del procesador.
Yo solucioné precariamente este problema mostrando un UserForm de pantalla
completa y un HourGlass de puntero para que el usuario espere y no se


maree
durante el proceso.
Según lo dicho.
¿Alguno de ustedes pudo referenciar a una celda desde otra hoja sin
activarla?

Saludos y Felices Fiestas.


Respuesta Responder a este mensaje
#3 Adriano DAmbra
23/12/2003 - 16:48 | Informe spam
En la respuesta que le diste a Juan de cómo copiar Valores creo que ya está
contestada mi pregunta.

Sin dimensionar una variable de tipo Hoja te deja hacer lo mismo?

Supongo que ahí estaba mi problema no?

Saludos.

"Fernando Arroyo" escribió en el mensaje
news:
Usando VBA, normalmente _no_ es necesario seleccionar la hoja con cuyas
celdas se quiere trabajar ni que dicha hoja sea la activa. Lo que sucede es
que si el código lo ha generado el grabador de macros, dicho código será
casi siempre muy ineficiente y se podrá mejorar mucho, pero sin ver el
código es difícil que podamos decirte algo en concreto.

Sobre lo del parpadeo, es posible evitarlo poniendo

Application.ScreenUpdating = False

al principio del sub, y

Application.ScreenUpdating = True

al final, pero esto muchas veces no es necesario si el código no anda
cambiando la selección de hojas y/o rangos.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Adriano D'Ambra" escribió en el mensaje
news:
Hola a todos, a todos los que programan en VBA Excel les debe haber pasado
que para acceder a un determinado rango o celda de una hoja, dicha hoja


debe
estar activa. Esto es muy incómodo, ya que cuando uno desarrolla un código
extenson con muchos pasos, las pantallas titilan de manera insoportable


para
la vista, y esto depende de la velocidad del procesador.
Yo solucioné precariamente este problema mostrando un UserForm de pantalla
completa y un HourGlass de puntero para que el usuario espere y no se


maree
durante el proceso.
Según lo dicho.
¿Alguno de ustedes pudo referenciar a una celda desde otra hoja sin
activarla?

Saludos y Felices Fiestas.


Respuesta Responder a este mensaje
#4 Fernando Arroyo
23/12/2003 - 16:55 | Informe spam
"Adriano D'Ambra" escribió en el mensaje news:%
Ahh, muy bueno lo del parpadeo.
¿Pero no te da error por ejemplo en Hojas que han sido previamente ocultadas
si quieres referenciar a celdas de ella?




Así es; si la hoja está oculta y se intenta seleccionar se produce un error, pero lo que trato de decir es que normalmente no es necesario seleccionar una celda para trabajar con ella desde VBA, ni tampoco la hoja en que se encuentra. Por ejemplo, suponiendo que Hoja2 estuviera oculta, el siguiente código funcionaría sin problemas:

Worksheets("Hoja2").Range("A1") = 3

(pondría 3 en la celda A1 de la hoja). Fíjate que es imposible que Hoja2 pueda estar seleccionada en el momento de correr el código dado que es una hoja oculta, a pesar de lo cual el código funciona.
Un saludo.


Fernando Arroyo
MS MVP - Excel

Saludos.


Respuesta Responder a este mensaje
#5 Adriano DAmbra
23/12/2003 - 17:06 | Informe spam
Qué raro, pruebo. No se por qué no me funcionaba entonces. Algo debería
estar haciendo mal.

Lo de no tener que seleccionar está clarísimo, de hecho no selecciono celdas
innecesariamente ya que me muevo con Offset cuando tengo que recorrer
listados y hacer cortes de control.

Saludos otra vez.


"Fernando Arroyo" escribió en el mensaje
news:#
"Adriano D'Ambra" escribió en el mensaje
news:%
Ahh, muy bueno lo del parpadeo.
¿Pero no te da error por ejemplo en Hojas que han sido previamente


ocultadas
si quieres referenciar a celdas de ella?




Así es; si la hoja está oculta y se intenta seleccionar se produce un error,
pero lo que trato de decir es que normalmente no es necesario seleccionar
una celda para trabajar con ella desde VBA, ni tampoco la hoja en que se
encuentra. Por ejemplo, suponiendo que Hoja2 estuviera oculta, el siguiente
código funcionaría sin problemas:

Worksheets("Hoja2").Range("A1") = 3

(pondría 3 en la celda A1 de la hoja). Fíjate que es imposible que Hoja2
pueda estar seleccionada en el momento de correr el código dado que es una
hoja oculta, a pesar de lo cual el código funciona.
Un saludo.


Fernando Arroyo
MS MVP - Excel

Saludos.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida