Skip to main content

Como permitir que apenas uma caixa de seleção em um grupo seja selecionada no Excel?

Author: Siluvia Last Modified: 2025-06-04

Como mostra a captura de tela abaixo, para um grupo de caixas de seleção listadas na linha 2, ao selecionar ou marcar uma caixa de seleção, todas as outras são automaticamente desativadas. Como conseguir isso? O código VBA neste artigo pode ajudá-lo.

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

Permita que apenas uma caixa de seleção seja selecionada com o código VBA


Permita que apenas uma caixa de seleção seja selecionada com o código VBA

Você pode executar os seguintes códigos VBA para selecionar apenas uma caixa de seleção em um grupo de caixas de seleção por vez. Por favor, siga os passos abaixo.

1. Primeiro, insira as caixas de seleção conforme necessário. Aqui, você deve inserir as caixas de seleção do Controle ActiveX, como mostra a captura de tela a seguir:

A screenshot showing the insertion of ActiveX Control checkboxes in Excel

2. Em seguida, pressione simultaneamente as teclas Alt + F11 para abrir a janela Microsoft Visual Basic for Applications.

3. Na janela Microsoft Visual Basic for Applications aberta, clique em Inserir > Módulo de Classe.

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

4. Altere o nome da classe para ClsChk na caixa (Nome) do painel Propriedades e, em seguida, copie e cole o código VBA abaixo na janela de Código correspondente. Veja a captura de tela:

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

Código VBA 1: Selecione apenas uma caixa de seleção por 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. Agora clique em Inserir > Módulo, depois copie e cole o código VBA abaixo na janela Módulo.

Código VBA 2: Selecione apenas uma caixa de seleção por 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. Pressione a tecla F5 para executar o código.

A partir de agora, ao marcar qualquer uma das caixas de seleção na planilha, todas as outras caixas de seleção serão automaticamente desativadas, e você pode desmarcá-la para ativar todas as caixas de seleção novamente.

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

Observação: Se uma nova caixa de seleção for adicionada ao grupo de caixas de seleção, execute novamente o código VBA para ativar todas as caixas de seleção novamente. Excluir uma caixa de seleção do grupo também requer executar o código novamente.


Artigos relacionados:

Melhores Ferramentas de Produtividade para Office

🤖 Assistente AI do KUTOOLS: Revolucione a análise de dados com base em: Execução Inteligente | Gerar Código | Criar Fórmulas Personalizadas | Analisar Dados e Gerar Gráficos | Invocar Funções Aprimoradas
Recursos Populares: Encontrar, Destacar ou Marcar Duplicatas | Excluir Linhas em Branco | Combinar Colunas ou Endereço sem Perder Dados | Arredondar...
Super PROC: PROC com Múltiplos Critérios | PROC com Múltiplos Valores | Procura em várias planilhas | Correspondência Fuzzy...
Lista Suspensa Avançada: Crie rapidamente uma Lista Suspensa | Lista Suspensa Dependente | Lista Suspensa com Múltipla Seleção...
Gerenciador de Colunas: Adicionar um Número Específico de Colunas | Mover Colunas | Alternar Estado de Visibilidade das Colunas Ocultas | Comparar Intervalo & Colunas...
Recursos em Destaque: Grade de foco | Visualização de Design | Barra de fórmulas aprimorada | Gerenciador de Pasta de trabalho & Planilha | Biblioteca de AutoTexto | Selecionador de Data | Mesclar Dados | Criptografar/Descriptografar Células | Enviar Email por Lista | Super Filtro | Filtro Especial (filtrar negrito/itálico/tachado...)...
Top15 Conjuntos de Ferramentas:12 Ferramentas de Texto (Adicionar Texto, Excluir Caracteres Específicos, ...) | Mais de50 Tipos de Gráficos (Gráfico de Gantt, ...) | Mais de40 Fórmulas Práticas (Calcular a idade com base na data de nascimento, ...) |19 Ferramentas de Inserção (Inserir Código QR, Inserir Imagem a partir do Caminho, ...) |12 Ferramentas de Conversão (Converter em Palavras, Conversão de Moeda, ...) |7 Ferramentas de Mesclar & Dividir (Mesclar Linhas Avançado, Dividir Células, ...) | ... e muito mais

Potencialize suas habilidades no Excel com o Kutools para Excel e experimente uma eficiência sem igual. O Kutools para Excel oferece mais de300 recursos avançados para aumentar sua produtividade e economizar tempo. Clique aqui para obter o recurso que você mais precisa...


O Office Tab traz interface com abas para o Office e facilita muito o seu trabalho

  • Habilite a edição e leitura com abas no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas abas na mesma janela, em vez de abrir novas janelas.
  • Aumente sua produtividade em50% e reduza centenas de cliques do mouse todos os dias!