Como permitir que apenas uma caixa de seleção em um grupo seja selecionada no Excel?
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.
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:
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.
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:
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.
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:
- Como filtrar dados com base em uma caixa de seleção no Excel?
- Como ocultar uma caixa de seleção quando a linha está oculta no Excel?
- Como destacar uma célula ou linha com uma caixa de seleção no Excel?
- Como criar uma lista suspensa com várias caixas de seleção no Excel?
- Como inserir um carimbo de data em uma célula se uma caixa de seleção for marcada no Excel?
Melhores Ferramentas de Produtividade para Office
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!