Ayuda Héctor... Problemas al eliminar botones!!

23/06/2004 - 10:44 por gema.bernardo | Informe spam
Hola Héctor!

He utilizado la funcion que me proporcionaste para eliminar botones y todo
correcto, consigo borrar los botones. Pero como resultado de esta accion
me ha ocurrido algo curioso y que me preocupa.

EL procedimiento de borrado indicado es el siguiente:
-
Para eliminar los botones [y/o cualquier figura] en una celda especifica...
es necesario hacer un 'barrido' por TODAS los objetos 'Shape' de la
hoja y
'comparar' su ubicacion ;)
un 'ejemplo' de un procedimiento que puedas usar de manera
'independiente'
[como el de 'AgregarBotones'] seria...
en un modulo de codigo 'normal' ==Private Sub EliminarBoton( _
ByVal Hoja As Worksheet, _
ByVal Celda As String)
Dim Boton As Shape
With Hoja
For Each Boton In .Shapes
If Boton.TopLeftCell.Address = Range(Celda).Address Then Boton.Delete
Next
End With
End Sub
ššššššššššššš
y... la manera de 'llamarlo' [desde cualquier otra parte de tu codigo]
seria...
[... otras lineas en tu codigo ...]
EliminarBoton ActiveSheet, "b2"

[... otras lineas en tu codigo ...]

-

Me ocurre lo siguiente:
En la hoja tenia varias celdas definidas con Validation en forma de List
rellenad con un Rango de una columna de la misma hoja.
Ahora en estas celdas se mantiene el Validation, pero en ningun momento me
sale la flecha que permite desplegar la lista definida. ¿He borrado el
boton de la flecha?¿que puede haber ocurrido?¿como puedo recuperar la
lista de validation?

He probado a hacer un nuevo validation en cualquier otra celda de la hoja
y tampoco me sale la flecha!! Debe de ser una tonteria, pero no sé como
arreglarlo.

Como última opcion, voy a poner un Control ToolBox de Lista desplegable y
modificar codigo interno... aunque me es lioso por la gran funcionalidad
que ya tiene desarrollada la hoja.


A ver si sabrias decirme algo.. me urge.

Gracias,un saludo:
Gema Bernardo
 

Leer las respuestas

#1 Héctor Miguel
24/06/2004 - 03:19 | Informe spam
hola, Gema !

... la funcion ... para eliminar botones y ... consigo borrar los botones.
... como resultado de esta accion me ha ocurrido algo ... que me preocupa.
... tenia varias celdas ... con Validation ... List ... con un Rango [...]
... se mantiene el Validation, pero en ningun momento me sale la flecha que permite desplegar la lista [...]
¿He borrado el boton de la flecha? ¿que puede haber ocurrido? ¿como puedo recuperar la lista de validation?
He probado a hacer un nuevo validation en cualquier otra celda de la hoja y tampoco me sale la flecha!! [...]



1.- la parte 'central' en el procedimiento [sugerido] para la eliminacion de botones =>segun su 'ubicacion'<= es...
For Each Boton In .Shapes
If Boton.TopLeftCell.Address = Range(Celda).Address Then Boton.Delete
Next



2.- [observa que] 'compara' SI el boton esta 'ubicado' en la celda 'indicada' =>para 'poder quitarlo'<= OJO
por tal 'condicionante' y ANTES DE ['intentar' siquiera] ELIMINAR 'otro' objeto... =>el codigo 'debio' FALLAR< una 'lista desplegable' [de reglas] de validacion [aunque tambien] 'pasa' por la coleccion de objetos 'Shape'...
NO 'tiene' la propiedad 'TopLeftCell'... =>debio 'aparecer' un mensaje de error 1004 en tiempo de ejecucion.<
3.- =>la unica<= forma en que 'ese' error se puede 'saltar' es...
usando una instruccion 'On Error Resume Next' [o 'similar'] =>ANTES<= de la instruccion del 'borrado'
ya sea porque 'le fue agregada' o... el codigo 'forma parte' de 'otro' codigo =>que tiene<= esa instruccion

4.- hay otras formas de 'prevenir', para que NO se llegue a 'presentar' ese error [p.e.]
'filtrar' los objetos [Shape] ANTES de 'llegarle' a la seccion de 'eliminacion'... [una manera es...]
[para el caso 'especifico' de que se trata de 'botones' de comando de la barra de herramientas 'formularios']
For Each Boton In .Shapes
If Boton.FormControlType = xlButtonControl Then
If Boton.TopLeftCell.Address = Range(Celda).Address Then Boton.Delete
End If
Next

=> [nuevamente...] 'pudiera fallar' si dentro de la coleccion de objetos 'shape' de la hoja... hay 'de otros tipos' :(

5.- ahora... la parte 'fatidica' de esta situacion :((
una vez 'eliminado' =>cualquier<= objeto 'Shape-flecha' de lista desplegable de validadion...
=>NO hay forma<= de 'volver' a 'presentar' las flechas de listas deslegables de validacion [en 'esa' hoja] :((
=> solo queda... copiar [todas?] las celdas [o el rango 'usado'] =>a una hoja NUEVA<= OJO: NO copiar 'la hoja'

[personalmente] LAMENTO no haber podido anticipar mas 'variantes operativas' :((
y... me interesa [y te agradeceria] si puedes 'confirmar' lo de la instruccion 'On Error Resume Next' [o 'similar'] ;)

saludos,
hector.

Preguntas similares