crear commandbutton desde visualbasic

15/06/2004 - 15:30 por gema.bernardo | Informe spam
Hola gente!

Tengo que crear el diseño de una hoja excel dinámicamente, de forma que
tengo que crear botones en N columnas, segun las condiciones que desee el
usuario.

Habia pensado en rellenar las columnas con los botones inicialmente
ocultos y segun vaya necesitandolos ponerlos con la propiedad Visible a
True. Esta solución la tomaria si no hay forma de crear botones
dinámicamente desde código visual basic ¿alguien me puede echar una
mano para sabee cómo se crea este tipo de objeto?¿y cómo indicarle la
posicion y la macro que se tendría que ejecutar cuando se produzca el
evento _onClick del mismo?

Muchas Gracias.
Un saludo,
Gema.
 

Leer las respuestas

#1 Héctor Miguel
16/06/2004 - 10:07 | Informe spam
hola, Gema !

... crear ... una hoja ... dinamicamente ... crear botones en N columnas, segun ... el usuario [...]
... como se crea este tipo de objeto?
... como indicarle la posicion?
... y la macro que se tendria que ejecutar cuando se produzca el evento _onClick del mismo?



si lo tienes que 'repetir' n_veces...
[te sugiero] un procedimiento 're-usable' al que 'le digas' [o... 'te pregunte']...
- en que hoja
- en que ubicacion [la 'direccion' de algun rango, p.e. "n1" o... "a7:b9" o...]
- el titulo
- que macro se ejecutara =>obviamente, la macro DEBERA 'existir' en el proyecto de macros<
te pongo un ejemplo [incrustando un boton de la barra de herramientas 'formularios']
si cualquier duda... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==' el procedimiento 'maestro' [por llamarlo de algun modo] :)) '
Private Sub AgregarBoton( _
ByVal Hoja As Worksheet, _
ByVal Ubicacion As String, _
ByVal Título As String, _
ByVal Macro As String)
Dim Izquierda As Single, Arriba As Single, Ancho As Single, Alto As Single
With Hoja
Izquierda = .Range(Ubicacion).Left
Arriba = .Range(Ubicacion).Top
Ancho = .Range(Ubicacion).Width
Alto = .Range(Ubicacion).Height
With .Buttons.Add(Izquierda, Arriba, Ancho, Alto)
.Caption = Título
.OnAction = Macro
End With
End With
End Sub

' una forma de 'llamarlo' en repetidas ocasiones '
Sub NuevoBoton()
AgregarBoton ActiveSheet, "d15", "Botón X", "EstaMacro"
AgregarBoton Worksheets("Hoja2"), "b8:c9", "Botón Y", "EstaOtraMacro"
End Sub

Preguntas similares