Ir para o conteúdo principal

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

Autor: Siluvia Última modificação: 2024-10-31

Conforme mostrado na 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 desabilitadas. Como fazer isso? O código VBA neste artigo pode ajudar você.

Uma captura de tela de um grupo de caixas de seleção no Excel onde apenas uma pode ser selecionada por vez

Apenas marque uma caixa de seleção para ser selecionada com o código VBA


Apenas marque uma caixa de seleção para ser selecionada com o código VBA

Você pode executar os códigos VBA abaixo para selecionar apenas uma caixa de seleção por vez em um grupo de caixas de seleção. Faça o seguinte.

1. Em primeiro lugar, insira as caixas de seleção conforme necessário. Aqui, você deve inserir o Caixas de seleção de controle ActiveX como a seguinte captura de tela mostrada:

Uma captura de tela mostrando a inserção de caixas de seleção do Controle ActiveX no Excel

2. Em seguida, pressione outro + F11 simultaneamente para abrir o Microsoft Visual Basic para Aplicações janela.

3. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo de Classe.

Uma captura de tela mostrando a opção de inserir um módulo de classe no Excel VBA

4. Altere o nome da classe para ClsChkGenericName no (Nome) caixa do Propriedades painel e, em seguida, copie e cole o código VBA abaixo no painel Code janela. Veja a imagem:

Uma captura de tela do painel Propriedades no VBA para renomear a classe para 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 inserção > Módulo, copie e cole o código VBA abaixo no Módulo janela.

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. aperte o F5 chave 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 desabilitadas, e você poderá desmarcá-las para ativar todas as caixas de seleção novamente.

Uma captura de tela de caixas de seleção no Excel onde apenas uma é habilitada por vez após a execução do código VBA

Note: 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 a caixa de seleção do grupo de caixas de seleção também precisa executar o código novamente.


Artigos relacionados:

Melhores ferramentas de produtividade de escritório

🤖 Assistente de IA do Kutools: Revolucionar a análise de dados com base em: Execução Inteligente   |  Gerar Código  |  Crie fórmulas personalizadas  |  Analise dados e gere gráficos  |  Invocar funções do Kutools...
Recursos mais comuns: Encontre, destaque ou identifique duplicatas   |  Excluir linhas em branco   |  Combine colunas ou células sem perder dados   |   Rodada sem Fórmula ...
Super pesquisa: VLookup de múltiplos critérios    VLookup de múltiplos valores  |   VLookup em várias planilhas   |   Pesquisa Difusa ....
Lista suspensa avançada: Crie rapidamente uma lista suspensa   |  Lista suspensa de dependentes   |  Lista suspensa de seleção múltipla ....
Gerenciador de colunas: Adicione um número específico de colunas  |  Mover colunas  |  Alternar status de visibilidade de colunas ocultas  |  Compare intervalos e colunas ...
Recursos em destaque: Foco da Grade   |  Vista de Design   |   Grande Barra de Fórmula    Gerenciador de pastas de trabalho e planilhas   |  Biblioteca de Recursos (Auto texto)   |  Data Picker   |  Combinar planilhas   |  Criptografar/Descriptografar Células    Enviar e-mails por lista   |  Super Filtro   |   Filtro Especial (filtro negrito/itálico/tachado...) ...
15 principais conjuntos de ferramentas12 Texto Ferramentas (Adicionar texto, Remover Personagens, ...)   |   50+ de cores Tipos (Gráfico de Gantt, ...)   |   Mais de 40 práticos Fórmulas (Calcule a idade com base no aniversário, ...)   |   19 Inclusão Ferramentas (Insira o código QR, Inserir imagem do caminho, ...)   |   12 Conversão Ferramentas (Números para Palavras, Conversão de moedas, ...)   |   7 Unir e dividir Ferramentas (Combinar linhas avançadas, Dividir células, ...)   |   ... e mais

Aprimore suas habilidades de Excel com o Kutools para Excel e experimente uma eficiência como nunca antes. Kutools para Excel oferece mais de 300 recursos avançados para aumentar a produtividade e economizar tempo.  Clique aqui para obter o recurso que você mais precisa...


Office Tab traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!