Como Asignar una Macro a Objeto Creado por Macro...

Tengo una rutina que crea dos CheckBox,
y esto lo hace bien, pero no se como poder asignarle
en la misma macro que automáticamente al hacer clic
ejecute una macro.
El código de creación es el siguiente:
Sub CreaObjetoHPC()
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
       Link:=False, DisplayAsIcon:=False, _
       Left:=494, Top:=85, Width:=120, Height:=14).Select
    Range("A1").Select
    ActiveSheet.OLEObjects("CheckBox1").Object.Caption = "C004 - HPC Hometrade"
    ActiveSheet.OLEObjects("CheckBox1").Object.BackColor = RGB(255, 255, 100)
    ActiveSheet.OLEObjects("CheckBox1").Object.Font.Size = 9
    ActiveSheet.OLEObjects("CheckBox1").Object.Font.Bold = True
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
        Link:=False, DisplayAsIcon:=False, _
        Left:=494, Top:=100, Width:=120, Height:=14).Select
    Range("A1").Select
    ActiveSheet.OLEObjects("CheckBox2").Object.Caption = "C005 - HPC Miscelaneo"
    ActiveSheet.OLEObjects("CheckBox2").Object.BackColor = RGB(255, 255, 100)
    ActiveSheet.OLEObjects("CheckBox2").Object.Font.Size = 9
    ActiveSheet.OLEObjects("CheckBox2").Object.Font.Bold = True
End Sub

2 Respuestas

Respuesta
1
If ChekBox1.Value = True Then Tu_Macro
If CheckBox2.Value = True Then Tu_Otra_Macro
[email protected]
Al parecer no me explique bien, pero la respuesta que me diste yo ya la tengo definida, lo que necesito, es que cuando cree, el checkbox, "vía macro", no manualmente, pueda dentro de la misma rutina de creación asignarla que ejecute la macro creado para eso.
En mi hoja no existen los checkbox, si no que los creará de acuerdo a solicitud, y una vez creada deseo que ejecute otras macros ya creadas.
Espero haber sido más claro.
ActiveSheet.Shapes("Check Box 1").Select
Application.Goto Reference:="Tu_Macro"
[email protected]
Aún o me hago entender, :(.
La idea es que al definir vía macro con la rutina que puse al inicio de esta pregunta, en la misma macro escriba un comando que me permita definir que al hacer click en el checkbox ejecute una macro, algo así como el comando OnAction, pero no se porque no funciona con el CheckBox.
Las 2 opciones que me has dado son ciertas pero cuando tengo ya definidos los checkbox en mi hoja. No es este el caso.
La idea es crear desde la nada a través de una macro, un checkbox "x" y que ademas de crearlo pueda definir dentro de esta creación que la cliclearlo me ejecute una macro ya creada con anterioridad.
ActiveSheet. CheckBoxes. Add(134.25, 28.5, 105.75, 18.75).Select
Selection.OnAction = "Tu_Macro"
[email protected]
Respuesta
1
Es tan fácil como insertarte un botón en la hoja y que ejecute la macro. En la barra de herramientas eliges Ver>Barra de herramienta>Cuadro de controles Ahora sitúas el cursor sobre cada control y pinchas encima del que es un botón. Vas a la hoja y pinchas donde quieras y dibujas un botón del tamaño que te guste. Ahora pinchas encima del botón con el derecho y eliges Ver código, se te abrirá VBA le pegas tu código donde esta el cursor pero sin tu primera linea ni la ultima de tu código quedaría así:
Private Sub CommandButton1_Click()
TU CODIGO
End Sub
Guardas y cierras el VBA pinchas en el botón y se ejecutará tu código
Si te ha servido puntúas y finalizas la pregunta
>Un saludo
>Julio
Todo lo que me acabas de decir, lo se, y por supuesto es muy fácil.
Pero ¿cómo lograr asignarle ma macro, pero a través de una rutina (Sub o Private Sub), sin hacerlo manualmente cada vez que quiera crearlos.
El código es este, si de todas formas empleas la grabadora de macros para lo que pretendes hacer y luego examinas el código encontraras muchas respuestas.
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=480.75, Top:=115.5, Width:=63.75, Height _
:=17.25).Select
Las medidas de Left es situación en horizontal, las medidas Top es en vertical (donde quieres que aparezca el boton9 la medida Width es el ancho del botón y la medida Height es el alto
>Un saludo
>Julio
Si te fijas en la pregunta original que hice, te muestro el código que ya tengo y que es igual a lo que me acabas de decir. Mi pregunta va más allá de sólo hacer el botón, lo que deseo que una vez creado yo pueda asignarle al momento de crearlo una macro ya existente en mi proyecto, sin tener que hacerlo manualmente. ¿Se entiende ahora?
Vale pues después de crear tu objeto (CommandButton1) sigues escribiendo código creando la acción del botón que no puede ser otro que click en él. Escribes
Private Sub CommandButton1_Click()
Aquí pones el codigo con lo que quieres que haga el boton
End Sub
Al crear otra Sub dejaras la macro del botón asignada en VBA
Otra cosa, creando el botón desde código cada vez que se ejecute la macro creará un botón dándole un numero correlativo, CommandButton1, 2, 3... para que eso no ocurra cuando cierras el libro debes de eliminar el botón de la hoja porque sino no funcionaria la macro puesta en CommandButton1_Click porque el que habría puesto la macro sería el 2 encima del 1 y no tendría asignada macro. Lo mejor para evitar todo este engorro es crearlo en la misma hoja dibujando el botón desde el cuadro de controles y asignándole la macro correspondiente, así nunca tienes problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas