Note: The other languages of the website are Google-translated. Back to English
Log in  \/ 
x
or
x
Inscreva-se  \/ 
x

or

Como fazer com que apenas uma caixa de seleção seja marcada em um grupo de caixas de seleção no Excel?

Como mostrado na imagem abaixo, para um grupo de caixas de seleção listadas na linha 2, ao marcar ou marcar apenas uma caixa de seleção, as outras caixas de seleção serão desabilitadas. Como conseguir isso? O código VBA neste artigo pode ajudá-lo.

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:

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.

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

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.

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

Importante: 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.


Rartigos exaltados:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Super Formula Bar (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office 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!
officetab bottom
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Min Ko Ko · 10 months ago
    I want to get this feacture just row by row and not entire sheet.How should i fix this code alittle? I am not familiar with vba too much.If can, plz help me.
    • To post as a guest, your comment is unpublished.
      crystal · 10 months ago
      Hi Min Ko Ko,
      If you want to select only one option row by row, I recommend you to use the combination of Option Button (Form Control) and Group Box (Form Control).
      1. Just draw a Group Box in the worksheet.
      2. Keep the Group Box selected, and then draw Option Buttons inside the box.
      3. Repeat the steps to insert new Group box and Option Buttons in a new row.
      4. As the group box has title and borders, you can apply the below VBA code in the Module code window to hide all titles and borders of group boxes in current worksheet.
      Sub ToggleVisible() Dim myGB As GroupBox For Each myGB In ActiveSheet.GroupBoxes myGB.Visible = False Next myGB End Sub
  • To post as a guest, your comment is unpublished.
    Justin Keith · 1 years ago
    You really need to explain how to access the class name in order to change it. BTW folks, it's F4 to open the window on the left side of the screen and then edit the class name.
  • To post as a guest, your comment is unpublished.
    Arnold · 1 years ago
    hi,
    the error appears under the first code.
    xObj.Object.Value = False
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi Arnold, did you get any prompt box? and which Excel version are you using?
      • To post as a guest, your comment is unpublished.
        Tim · 1 years ago
        It works fine if all you are using is checkboxes.
        If you add any other activeX items and assign controls to them, it throws the error Arnold mentioned.
  • To post as a guest, your comment is unpublished.
    cass · 2 years ago
    when i close the Excel and open the file again the checkboxes stop working how do I fix this pls?
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi,
      Please save the workbook as an Excel Macro-enabled Workbook in order to save the codes in workbook. But when you reopen the workbook, you need to get into the code window to manually run the code in the Module window to activate it.
      • To post as a guest, your comment is unpublished.
        Barbara · 11 months ago
        Hi, is there a way around? I would like to use this for multiple people, and I am sure they will not run the code aftre opening....

  • To post as a guest, your comment is unpublished.
    Morten G. · 4 years ago
    Hi! Thanks for this useful guide! I have an additional question: Im working with both columns and rows. If one checkbox value is true, all checkboxes in the same row and column has to be disabled. How do I do that? Best, Morten