Saltar al contenido

Insertar CommandButton en Hoja


Recommended Posts

publicado

Muy buen día, tarde, noche.

Quisiera me pudieran orientar en algo que no logro resolver.

Lo que quisiera que me ayudaran es en insertar un commandbutton en una hoja de excel, pero a través de código VBA.

Por lo general lo que hago antes de venir aquí es hacer una grabación de macros para ver el código, y el resultado que me ha dado es el siguiente:

    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=668.25, Top:=9.75, Width:=72, Height:= _
        24).Select

Pero esto no es lo que necesito, pues lo que quiero hacer es que al momento de crear el botón de comando, ya venga definido el nombre del botón, y esté ubicado en una celda en específico, por ejemplo "H2", y que además este botón ya tenga predefinida la macro con la que quiero que trabaje.

Esto lo solicito, pues tengo una macro que me inserta hojas con formatos predefinidos, pero adicionalmente quiero que al momento de insertar la hoja, venga por default el botón de comando, pues me va a servir para que el botón también llame a otra macro.

Les pongo un ejemplo de cómo quisiera me apareciera el botón.

EjemploForo.xlsm

publicado

hola ahi te puse un ejemplo de como insertar el botón,ubicarlo en h2 ,darle un nombre, caption, y como ya tienes declarado el evento en la hoja este al hacer click llama a ese evento.

creo que es eso lo que pedís, (ejecuta la Macro1)

EjemploForo.xlsm

publicado

Otra opción con control de formulario en lugar de ActiveX:

En un módulo:

Sub CrearBotón(): On Error Resume Next
NombreBotón = "MiBotón"
EjecutarMacro = "MiMacro"
TextoBotón = "Hola"
Set Celda = Range("H2")
'--
Application.ScreenUpdating = False
With ActiveSheet
   .Shapes(NombreBotón).Delete
   .Buttons.Add(Celda.Left, Celda.Top, _
                Celda.Width, Celda.Height).Select
    With Selection
      .Name = NombreBotón
      .OnAction = EjecutarMacro
      .Characters.Text = TextoBotón
    End With
   ActiveCell.Select
End With
End Sub

Sub MiMacro()
    MsgBox "Hola mundo"
End Sub

 

publicado

Muchas gracias a ambos por sus respuestas.... están geniales... 

Voy a ver cual me conviene más aplicar a mi proyecto.

Tema solucionado.

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.