jueves, 9 de marzo de 2017

VBA: Insertar un CheckBox en nuestra Hoja con macros

En más de una ocasión me han preguntado por la forma de insertar mediante programación diferentes controles de formulario en celdas de nuestra hoja de cálculo Excel.
Básicamente la idea es automatizar la creación de plantillas o modelos en nuestras hojas.

Veremos qué tan sencillo es.
Nuestra macro la creamos en un módulo estándar de nuestro libro de trabajo.

Sub InsertarControlFormularioCheckBox()
'añadimos un control de formulario tipo CheckBox
'en una celda concreta de nuestra hoja de cálculo
Sheets("Hoja1").CheckBoxes.Add(Left:=Range("B1").Left, _
        Top:=Range("B1").Top, _
        Width:=Range("B1:C1").Width, _
        Height:=Range("B1").Height).Select

'asignamos propiedades a este CheckBox
With Selection
    .Name = "ChkBoxUNO"                     'Damos nombre al Control
    .Caption = "Test Añadir CheckBox"       'Texto a desplegar
    .LinkedCell = "D1"                      'cuál es la celda vínculada
    .Value = xlOn            'devuelve valor Marcado-Verdadero(Marcado/Desmarcado)
    .Display3DShading = True                'por estética damos formato de sombra 3D
End With
End Sub



Como observamos la primera sentencia
.CheckBoxes.Add
nos permite situar el control respecto de la ubicación actual de una celda concreta (en el ejemplo B1), asignándole además de las propiedades .Top y .Left otras dos habituales (Alto-Height y Ancho-Width).

En el siguiente grupo de instrucciones nos lanzamos a completar algunas de las propiedades que encontraríamos en el Formato de Control:
1-Valor (.Value)
2-Celda vinculada (.LinkedCell)
3-Sombreado 3D (.Display3DShading)
4-El Texto mostrado (.Caption)
5-y el más importante el nombre del control!! (.Name)

VBA: Insertar un CheckBox en nuestra Hoja con macros



Con la macro explicada estamos listos para ejecutarla, obteniendo el siguiente resultado en nuestra Hoja1:

VBA: Insertar un CheckBox en nuestra Hoja con macros

4 comentarios:

  1. hola a ver si alguien responde por aquí así puede insertar checkboxes de forma dinámica, pero pregunto como podría aplicarle código a los checkboxes de forma dinámica

    ResponderEliminar
    Respuestas
    1. Hola Joel
      estos son 'controles de formulario' (no Active X), por lo que no admitirían código...
      Pero para crear una macro que 'cree' macros lee aquí
      https://excelforo.blogspot.com/2017/03/vba-macro-para-crear-otras-macros-Excel.html
      Saludos

      Eliminar
  2. Hola, buen día, de antemano muchas gracias por el aporte.
    Espero puedan ayudarme con la siguiente consulta:
    hay alguna manera de crear estos ChekBox a un UserForm(en lugar de montarlos en la Hoja de Excel)?
    Gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      si es posible, solo que las propiedades del control son otras...
      Puedes insertarlo manualmente o incluso crear un procedimiento 'ex professo' para esto (lee aquí)

      Saludos

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.