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.

Preguntas similare

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
Respuesta Responder a este mensaje
#2 gema.bernardo
21/06/2004 - 10:41 | Informe spam
Hola Héctor!

Pues esto me vale, pero no del todo porque no sé como hacer un pasado de
parametros a esa macro en la hora de la creaccion del boton..para no tener
mil macros (una para cada boton). Me explico, la idea es que por ejemplo:
Tengo 3 botones que crear, y cada uno de ellos tiene como objetivo poner
visible una hoja diferente:
Boton 1 --> hace visible hoja 1
Boton 2 --> hace visible hoja 2
Boton 3 --> hace visible hoja 3


Si lo creo como me indicas, yo le puedo decir que el boton ejecute el
macro de VisibilizarHoja(), pero... ¿donde le indico la hoja?

Y otra cosilla.. Tal y como me indicabas estmos creando un boton de
formulario, pero me gustaria saber si se puede hacer lo mismo con los
botones del menu Control Toolbox ¿es posibe esto?..¿cómo?

Un saludo,
Gema BM.



Héctor Miguel wrote:

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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida