Corrección código

13/09/2009 - 11:16 por José Rafael | Informe spam
Alguien me puede corregir el código? Me da error (Error 438 en tiempo de
ejecución "El objeto no admite la propiedad o metodo") y no sé que falta
o sobranecesito que el bucle me borre los botones que existan (menos de
50)

For y = 1 To 50
If ActiveSheet.Shapes("Button " & y).noexist Then y = y + 1
ActiveSheet.Shapes("Button " & y).Select

Selection.Delete
y = y + 1
Next
Saludos y gracias
José Rafael

Preguntas similare

Leer las respuestas

#1 pepe
13/09/2009 - 16:43 | Informe spam
si quieres borrar todos los botones

Dim Hoja As Worksheet

Set Hoja = Worksheets("Hoja1")
Hoja.Shapes.SelectAll
Selection.Delete






"José Rafael" escribió en el mensaje de noticias
news:
Alguien me puede corregir el código? Me da error (Error 438 en tiempo de
ejecución "El objeto no admite la propiedad o metodo") y no sé que
falta o sobranecesito que el bucle me borre los botones que existan
(menos de 50)

For y = 1 To 50
If ActiveSheet.Shapes("Button " & y).noexist Then y = y + 1
ActiveSheet.Shapes("Button " & y).Select

Selection.Delete
y = y + 1
Next
Saludos y gracias
José Rafael

Respuesta Responder a este mensaje
#2 Héctor Miguel
13/09/2009 - 22:57 | Informe spam
hola, José Rafael !

Alguien me puede corregir el codigo?
Me da error (Error 438 en tiempo de ejecucion "El objeto no admite la propiedad o metodo")
y no se que falta o sobranecesito que el bucle me borre los botones que existan (menos de 50)

For y = 1 To 50
If ActiveSheet.Shapes("Button " & y).noexist Then y = y + 1
ActiveSheet.Shapes("Button " & y).Select
Selection.Delete
y = y + 1
Next



1) si los botones son objetos de la (ex)barra de herramientas "formularios" (?)
son parte de una coleccion exclusiva de las aplicaciones (no vba) y puedes eliminarlos en un solo paso
-> activesheet.buttons.delete

2) si los eliminas por una macro que borre TODOS los elementos "shape" (OJO)
podrias corromper esa hoja, SI por casualidad tienes otro tipo de "shapes"
(p.e. si se eliminan los desplegables en las celdas con validacion por lista ya no podras volver a usarlos)

saludos,
hector.
Respuesta Responder a este mensaje
#3 Gustavo Marinoni
14/09/2009 - 01:11 | Informe spam
Hola José Rafael,

Como "Shapes" es una colección del objeto Worksheets, puede recorrer la
colección con un For Each. Aqui no tendras que preocuparte por la cantidad
con una variable auxiliar ya que recorrerá toda la colección.

Si no deseas borrar todos los shapes puedes poner alguna condición dentro
del ciclo para decidir si tienes o no que borrar.

Ademas de esta forma no tienes que seleccionar el objecto que es una
operación que insume mucho tiempo y siempre es mejor tratar de eviartla en
las macros.

Dim dibujo As Shape
For Each dibujo In Worksheets("Sheet1").Shapes
dibujo.Delete
Next

Espero que te sirva.

Saludos,
Gustavo.
http://masexcel.blogspot.com

"José Rafael" wrote:

Alguien me puede corregir el código? Me da error (Error 438 en tiempo de
ejecución "El objeto no admite la propiedad o metodo") y no sé que falta
o sobranecesito que el bucle me borre los botones que existan (menos de
50)

For y = 1 To 50
If ActiveSheet.Shapes("Button " & y).noexist Then y = y + 1
ActiveSheet.Shapes("Button " & y).Select

Selection.Delete
y = y + 1
Next
Saludos y gracias
José Rafael



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida