Skip to main content

¿Cómo permitir que solo una casilla de verificación en un grupo esté seleccionada en Excel?

Author: Siluvia Last Modified: 2025-06-04

Como se muestra en la siguiente captura de pantalla, para un grupo de casillas de verificación listadas en la fila 2, al seleccionar o marcar una casilla, todas las demás se desactivan automáticamente. ¿Cómo lograrlo? El código VBA en este artículo puede ayudarte.

A screenshot of a group of checkboxes in Excel where only one can be selected at a time

Solo permite que una casilla de verificación sea seleccionada con código VBA


Solo permite que una casilla de verificación sea seleccionada con código VBA

Puedes ejecutar el siguiente código VBA para seleccionar solo una casilla de verificación en un grupo de casillas a la vez. Por favor, sigue los siguientes pasos.

1. Primero, inserta las casillas de verificación según sea necesario. Aquí, debes insertar las casillas de control ActiveX como se muestra en la siguiente captura de pantalla:

A screenshot showing the insertion of ActiveX Control checkboxes in Excel

2. Luego presiona simultáneamente las teclas Alt + F11 para abrir la ventana de Microsoft Visual Basic para Aplicaciones.

3. En la ventana abierta de Microsoft Visual Basic para Aplicaciones, haz clic en Insertar > Módulo de Clase.

A screenshot showing the option to insert a Class Module in Excel VBA

4. Cambia el nombre de la clase a ClsChk en el cuadro (Nombre) del panel Propiedades, y luego copia y pega el siguiente código VBA en la correspondiente ventana de Código. Ver captura de pantalla:

A screenshot of the Properties pane in VBA for renaming the class to ClsChk

Código VBA 1: Seleccionar solo una casilla de verificación a la vez

Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub

Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then

    I = Right(Target.Name, Len(Target.Name) - 8)
    For n = 1 To ActiveSheet.OLEObjects.Count
      If n <> Int(I) Then
        Set xObj = ActiveSheet.OLEObjects.Item(n)
        xObj.Object.Value = False
        xObj.Object.Enabled = False
      End If
    Next
Else
    I = Right(Target.Name, Len(Target.Name) - 8)
    For n = 1 To ActiveSheet.OLEObjects.Count
      If n <> Int(I) Then
        Set xObj = ActiveSheet.OLEObjects.Item(n)
        xObj.Object.Enabled = True
      End If
    Next
End If
End Sub

5. Ahora haz clic en Insertar > Módulo, luego copia y pega el siguiente código VBA en la ventana del Módulo.

Código VBA 2: Seleccionar solo una casilla de verificación a la vez

Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
   Set xSht = ActiveSheet
   Set xCollection = Nothing
    For Each xObj In xSht.OLEObjects
        If xObj.Name Like "CheckBox**" Then
            Set xChk = New ClsChk
            Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
            xCollection.Add xChk
        End If
    Next
    Set xChk = Nothing
End Sub

6. Presiona la tecla F5 para ejecutar el código.

A partir de ahora, al marcar cualquiera de las casillas de verificación en la hoja de cálculo, todas las demás casillas de verificación se desactivarán automáticamente, y puedes desmarcarla para activar todas las casillas nuevamente.

A screenshot of checkboxes in Excel where only one is enabled at a time after VBA code execution

Nota: Si se agrega una nueva casilla de verificación al grupo de casillas, por favor vuelve a ejecutar el código VBA para activar todas las casillas nuevamente. Eliminar una casilla de verificación del grupo también requiere volver a ejecutar el código.


Artículos relacionados:

Las mejores herramientas de productividad para Office

🤖 Kutools AI Aide: Revoluciona el análisis de datos basado en: Ejecución inteligente | Generar código | Crear fórmulas personalizadas | Analizar datos y generar gráficos | Invocar Funciones mejoradas
Funciones populares: Buscar, resaltar o marcar duplicados | Eliminar filas en blanco | Combinar columnas o celdas sin perder datos | Redondear...
Super BUSCARV: Búsqueda por varios criterios | Búsqueda de varios valores | Búsqueda en varias hojas | Coincidencia difusa....
Lista desplegable avanzada: Crea rápidamente una lista desplegable | Lista desplegable dependiente | Lista desplegable de selección múltiple....
Administrador de columnas: Agregar un número específico de columnas | Mover columnas | Alternar el estado de visibilidad de columnas ocultas | Comparar rangos y columnas...
Funciones destacadas: Cuadrícula de enfoque | Vista de diseño | Barra de fórmulas mejorada | Administrador de Libro de trabajo y Hoja de cálculo | Biblioteca de AutoTexto | Selector de fechas | Combinar Datos | Cifrar/Descifrar celdas | Enviar correo electrónico por lista | Super Filtro | Filtro especial (filtrar celdas con fuente en negrita/cursiva/tachado...)...
Top15 conjuntos de herramientas:12 herramientas de texto (Agregar texto, Eliminar caracteres específicos, ...) | Más de50 tipos de gráficos (Diagrama de Gantt, ...) | Más de40 fórmulas prácticas (Calcular edad basada en la fecha de nacimiento, ...) |19 herramientas de inserción (Insertar código QR, Insertar imagen desde ruta, ...) |12 herramientas de conversión (Convertir a palabras, Conversión de moneda, ...) |7 herramientas para combinar y dividir (Combinar filas avanzado, Dividir celdas, ...) | ... y más

Potencia tus habilidades en Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haz clic aquí para obtener la función que más necesitas...


Office Tab lleva la interfaz de pestañas a Office y facilita mucho tu trabajo

  • Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abre y crea varios documentos en nuevas pestañas de la misma ventana, en lugar de nuevas ventanas.
  • ¡Aumenta tu productividad en un50% y reduce cientos de clics de ratón cada día!