Cree múltiples casillas de verificación al instante con VBA

Índice
  1. Cómo funciona el código VBA
  2. El código VBA: cree varias casillas de verificación
  3. El código VBA: eliminar varias casillas de verificación
    1. Eliminar todas las casillas de verificación
    2. Eliminar algunas casillas de verificación

Las casillas de verificación colocadas en el frente de la hoja de cálculo son una excelente manera para que los usuarios interactúen con una hoja de cálculo. Cada casilla de verificación se puede vincular a una celda, de modo que cuando se hace clic en ella, el valor de la celda cambia entre VERDADERO y FALSO.

Pero si tienes muchas casillas de verificación para crear, se convierte en una verdadera molestia; simplemente hay demasiadas configuraciones para establecer para cada casilla de verificación. Si tengo que crear más de 2, entonces me quejo por dentro debido al proceso ineficiente para configurar cada caja individualmente.

Entonces creé algo de VBA para usarlo en mi Libro de macros personal. Cuando se ejecute la macro, creará, vinculará, desbloqueará y alineará tantas casillas de verificación como necesite en segundos. Eso me hace feliz

Cómo funciona el código VBA

Cuando se ejecuta el siguiente código VBA, se mostrarán dos cuadros de entrada.

Desde el primer cuadro de entrada, seleccione el rango de celdas en las que crear las casillas de verificación y luego haga clic en Aceptar. En la captura de pantalla siguiente, se crearán 30 casillas de verificación, una en cada celda de A1 a C10.

Crear casillas de verificación: seleccionar rango

El segundo cuadro de entrada (que se muestra a continuación) establecerá el valor predeterminado.

  • Verdadero o 1 = marcado
  • Falso o 0 = Sin marcar

Una vez completado, haga clic en Aceptar.

Crear casillas de verificación: valor predeterminado

La macro ahora creará todas las casillas de verificación, lo que supone un fantástico ahorro de tiempo.

Crear casillas de verificación - Después

Tenga cuidado; Si selecciona un rango grande (como una columna o fila completa), puede llevar algún tiempo ya que Excel crea las casillas de verificación una por una.

El código VBA: cree varias casillas de verificación

Copie el siguiente código en un módulo estándar, luego ejecute la macro titulada CreateCheckBoxes.

Sub CreateCheckBoxes()'Declarar variablesDim c Como RangeDim chkBox As CheckBoxDim ansBoxDefault como LongDim chkBoxRange As RangeDim chkBoxDefault As Boolean'Ingore errores si el usuario hace clic en Cancelar o XOn Error Reanudar Siguiente'Usar cuadro de entrada para seleccionar celdasEstablecer chkBoxRange = Application.InputBox(Pregunta:= "Seleccionar rango de celdas", _ Título:="Crear casillas de verificación", Tipo:=8)'Salga del código si el usuario hace clic en Cancelar o XIf Err.Number 0 Luego salga de Sub'Utilice MessageBox para seleccionar marcado o no marcadoansBoxDefault = MsgBox("Debería ¿Las casillas están marcadas?", vbYesNoCancel, _ "Crear casillas de verificación") Si ansBoxDefault = vbYes Entonces chkBoxDefault = TrueSi ansBoxDefault = vbNo Entonces chkBoxDefault = FalseSi ansBoxDefault = vbCancel Luego salga de Sub'Activar nuevamente la verificación de erroresEn caso de error Ir a 0'Recorrer cada celda en las celdas seleccionadasPara cada c En chkBoxRange 'Crea la casilla de verificación Establece chkBox = chkBoxRange.Parent.CheckBoxes.Add(0, 1, 1, 0) Con chkBox 'Establece la posición de la casilla de verificación según la celda .Top = c.Top + c.Height / 2 - chkBox.Height / 2 .Left = c.Left + c.Width / 2 - chkBox.Width / 2 'Establece el nombre de la casilla de verificación según la dirección de la celda .Name = c.Address 'Establecer la celda vinculada a la celda con la casilla de verificación .LinkedCell = c.Offset(0, 0).Address(external:=True) 'Habilite la casilla de verificación que se usará cuando se aplique la protección de la hoja de trabajo. Locked = False 'Establezca el título en blanco. Caption = "" End With 'Establece la celda con el valor predeterminado c.Value = chkBoxDefault 'Oculta el valor en la celda con formato numérico c.NumberFormat = ";;;"Next cEnd Sub

En el código anterior he asumido ciertas configuraciones:

  • El título debe estar en blanco, ya que normalmente uso la celda al lado de la casilla de verificación como título.
  • La casilla de verificación no está bloqueada, por lo tanto, cuando la hoja de trabajo esté protegida, la casilla seguirá funcionando.
  • El nombre de la casilla de verificación es la dirección de la celda en la que se encuentra.
  • La celda vinculada es la misma que la celda que contiene la casilla de verificación, pero el formato del número ocultará el valor al usuario.
  • La ubicación de la casilla de verificación está centrada en la celda.

El código VBA: eliminar varias casillas de verificación

Habiendo creado muchas casillas de verificación, el siguiente problema al que podría enfrentarse es cómo eliminar muchas casillas de verificación.

Eliminar todas las casillas de verificación

El siguiente código VBA eliminará todas las casillas de verificación de la hoja activa.

Sub EliminarAllCheckBoxes()ActiveSheet.CheckBoxes.DeleteEnd Sub

Si bien esto eliminará todas las casillas de verificación, no eliminará el valor de la celda vinculada. Por lo tanto, la siguiente macro puede ser más apropiada.

Eliminar algunas casillas de verificación

Si solo desea eliminar algunas casillas de verificación, el siguiente código VBA será suficiente. Un cuadro de entrada le pedirá un rango de celdas; estas son las celdas de las que se eliminarán las casillas de verificación.

Sub DeleteCheckBoxesInRange()'Crear variablesDim c As RangeDim chkBox As CheckBoxDim chkBoxRange As Range'Ingresar errores si el usuario hace clic en Cancelar o XOn Error Reanudar Siguiente'Usar cuadro de entrada para seleccionar celdasEstablecer chkBoxRange = Application.InputBox(Prompt:="Seleccionar rango de celdas:" , _ Título:="Eliminar casillas de verificación", Tipo:=8)'Salga del código si el usuario hace clic en Cancelar o XSi es error. Número 0, luego salga de Sub'Activar nuevamente la comprobación de errores En caso de error Ir a 0'Revise cada casilla de verificación para cada chkBox en chkBoxRange .Parent.CheckBoxes 'Eliminar la casilla de verificación donde la celda que contiene la casilla de verificación se cruza con el rango seleccionado. Si no es Application.Intersect(Range(chkBox.TopLeftCell.Address), _ chkBoxRange) no hay nada, entonces 'Borrar la celda vinculada, incluido el formato chkBox.Parent. Range(chkBox.LinkedCell).Value = "" chkBox.Parent.Range(chkBox.LinkedCell).NumberFormat = "General" 'Eliminar la casilla de verificación chkBox.Delete End IfNext chkBoxEnd Sub

Nota: En la macro de arriba, es el píxel superior izquierdo de la casilla de verificación el que determina su ubicación. Incluso si la casilla de verificación se extiende a varias celdas, desde una perspectiva de VBA solo está dentro de la celda que contiene el píxel superior izquierdo.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...