Crear shapes y borrarlos

30/08/2005 - 01:11 por Alejandro Garrammone | Informe spam
Hola grupo! hoy he posteado algo en el grupo y KL lo ha respondido de mil
maravillas, pero tengo otro problema.
El tema es así, yo con una macro deseo crear por ejemplo una linea o un
rectángulo, le he puesto un nombre dentro del cuerpo de la macro y he
guardado el nombre en una celda de excel. Hasta aquí todo bien, el problema
es que necesito luego que otra macro (en caso de ejecutarla) borre ese
rectángulo o línea que he creado y al utilizar el nombre que le he puesto el
debbugger me dice que no existe nada con ese nombre.
La pregunta es...¿hay alguna manera de, sin saber el nombre que se ha
puesto, borrar ese rectangulo o línea? lo único que se con seguridad son las
coordenadas en las cuales fueron creadas.

Gracias por todo,

Alejandro
 

Leer las respuestas

#1 Héctor Miguel
30/08/2005 - 02:50 | Informe spam
hola, Alejandro !

... con una macro deseo crear por ejemplo una linea o un rectangulo
... le he puesto un nombre dentro... de la macro y...guardado el nombre en una celda
... necesito luego que otra macro (en caso de ejecutarla) borre ese rectangulo o linea que he creado
... al utilizar el nombre que le he puesto el debbugger me dice que no existe nada con ese nombre.
... alguna manera de, sin saber el nombre que se ha puesto, borrar ese rectangulo o lonea?
lo unico que se con seguridad son las coordenadas en las cuales fueron creadas.



1) su utilizas una instruccion para eliminar objetos 'shape' +/- como la siguiente...
ActiveSheet.Shapes("Nombre del shape").Delete
la unica causa por la que pudier fallar es porque NO exista un objeto 'shape' ->con ese nombre<- en 'esa' hoja
-> ya se habra eliminado anteriormente ?
-> se la habra 'cambiado' de nombre ?
-> se encontrara 'en otra hoja' ?
[incuso, si existen varios objetos 'shape' con el mismo nombre... se eliminaria ->el primero<- de la coleccion 'shapes']

2) para eliiminar un 'shape' basado en sus coordenadas la [probablemente] 'unica' forma seria 'barriendo' los shapes de la hoja [p.e.]
Dim Fig As Shape
For Each Fig In ActiveSheet.Shapes
If Fig.Left = x And Fig.Top = y Then Fig.Delete
Next
=> donde 'x' es la coordenada izquierda y la 'y' es la coordenada superior
[nuevamente] si existen varios 'shapes' en esa ubicadion... se eliminarian TODOS :-(
he 'descartado' la busqueda por nombres [por tu comentario]... aunque creo que podrias 'combinar' opciones :)

saludos,
hector.

Preguntas similares