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 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:
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.
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.
Rartigos exaltados:
- Como filtrar dados com base na caixa de seleção do Excel?
- Como ocultar a caixa de seleção quando a linha está oculta no Excel?
- Como destacar uma célula ou linha com checkbox no Excel?
- Como criar uma lista suspensa com várias caixas de seleção no Excel?
- Como inserir carimbo de data em uma célula se uma caixa de seleção no Excel estiver marcada?
Melhores ferramentas de produtividade de escritório
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!