Saltar al contenido

Averiguar índice de una imagen/objeto


shadowjuan

Recommended Posts

publicado

No sé si existía algo parecido, pero lo dejo escrito porque me ha sido útil.

En una hoja donde hay muchos objetos, a veces necesitamos saber, para las macros, qué índice tiene un objeto en concreto (como una imagen prediseñada). Esto puede saberse si en Excel (2010) se va a Panel de selección (Inicio, Modificar, Buscar..., Panel de selección). Saldrán listados todos los objetos. A la derecha de cada objeto hay un cuadro con un ojo. La idea es tener presente en pantalla el objeto e ir haciendo click en cada ojo al lado de los nombres de los objetos, para ir ocultándolos uno a uno. Es un poco engorroso, pero es la mejor manera de ver cuándo se ocultará el objeto en cuestión. Cuando se oculte, hay que mirar el nombre asignado (ejemplo: Imagen 21... que no tiene por qué ser el objeto de índice 21, igual es el 21 que el 2 que el 15...) y re-activar todos los ojos (con el botón Mostrar todo). Cuando están todos activos, desactivar el de Imagen 21, siendo el único que tendrá en ese momento la propiedad Visible como False. Entonces:

-En un módulo nuevo:

Sub indiceobjetooculto()
For i = 1 To 5
If Hoja1.Shapes(i).Visible = False Then MsgBox (i)
Next
End Sub
[/CODE]

Se ejecuta este código y el msgbox que salte indicará el índice de la imagen. He puesto Hoja1, pero podría ser Hoja2, o la que sea. Y el 5 es un ejemplo de número según la cantidad de objetos.

Esta macro podría variarse según necesidades si se asigna una variable en lugar de un msgbox al resultado; además es imprescindible usar una macro para borrar algunos objetos "imborrables" (me ha pasado hoy mismo con un drop down, es decir, una flecha de lista desplegable que había colgada en mi hoja de cálculo, desconozco cómo ha llegado eso ahí pero sé que me era imposible borrarla desde Excel, lo he tenido que hacer vía VBA y siguiendo este método), tal que así:

[CODE]Sub borrarobjetooculto()
For i = 1 To 5
If Hoja1.Shapes(i).Visible = False Then Hoja1.Shapes(i).Delete
Next
End Sub[/CODE]

En realidad, esta macro borraría todos los objetos ocultos cuyo índice llega hasta el límite especificado en el FOR si no se ha hecho manualmente el proceso de activar/desactivar ojos. La macro anterior (la del principio) mostraría un msgbox por cada objeto oculto, también, por el mismo motivo.

Espero que os sea de utilidad. Un saludo :)

Invitado luigi
publicado

Hola Juan,

Gracias por aportar y colaborar, quería pedirte si por favor puedes adjuntar el archivo de pruebas.

Saludos, Luis.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.