Notifications
Clear all

Alternar click em Checbox(VBA)

7 Posts
4 Usuários
0 Reactions
1,367 Visualizações
 May_
(@may_)
Posts: 0
New Member
Topic starter
 

Olá!

Em uma planilha há 3 checkbox, sendo checkbox1; checkbox2 e checkbox3. Necessito programar para que ao clicar no checkbox1, automaticamente desative os checkbox2 e checkbox3; bem como se clicar no checkbox2, desative o checkbox1 e 3 e assim por diante.

Alguém pode me ajudar?

 
Postado : 13/04/2016 1:32 pm
(@mprudencio)
Posts: 0
New Member
 

Utilize um botao de opção.

 
Postado : 13/04/2016 2:22 pm
 May_
(@may_)
Posts: 0
New Member
Topic starter
 

Infelizmente, preciso programar neste formato. Poderias me ajudar?

 
Postado : 28/04/2016 12:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Dependendo do que pretende o ideal seria como o Marcelo falou, utilizar botões de opção, mas se tem de ser checkbox, coloque a rotina em um módulo e associe a macro On_Off_CheckBoxs aos CheckBox.

Sub On_Off_CheckBoxs()
Dim ws As Worksheet
Dim chk As CheckBox
Dim sQualChk

Set ws = ActiveSheet

'Capturar o checkbox que foi clicado
Set chk = ws.CheckBoxes(Application.Caller)
    
    'Armazena o nome do checkbox habilitado
    sQualChk = chk.Name
    
    'Percorre todos os checkbox
    For Each chk In ActiveSheet.CheckBoxes
       
       'Verifica os nomes e desmarca mantendo somente o que foi clicado
        If sQualChk <> chk.Name Then
            
            With chk
                  .Value = False
            End With
            
       End If
       
    Next chk
    
End Sub

Lembrando, que esta rotina esta fazendo somente a verificação e tornando Falso os demais checkbox, não tem nenhuma outra ação associada a macro, se for ter tem de ajustar a rotina.

[]s

 
Postado : 28/04/2016 1:13 pm
(@viisanches)
Posts: 0
New Member
 

Pelo o que eu entendi na sua dúvida é quando a pessoa clicar no CheckBox 1, desativar os outros CheckBox.

O código seria assim:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
        CheckBox2.Enabled = False
        CheckBox3.Enabled = False
    Else
        CheckBox2.Enabled = True
        CheckBox3.Enabled = True
End If

End Sub

Private Sub CheckBox2_Click()

If CheckBox2.Value = True Then
        CheckBox1.Enabled = False
        CheckBox3.Enabled = False
    Else
        CheckBox1.Enabled = True
        CheckBox3.Enabled = True
End If

End Sub

Private Sub CheckBox3_Click()

If CheckBox3.Value = True Then
        CheckBox1.Enabled = False
        CheckBox2.Enabled = False
    Else
        CheckBox1.Enabled = True
        CheckBox2.Enabled = True
End If

End Sub

Bom, ai você adapta o código a sua planilha.

Era essa a sua dúvida ? Aguardo Respostas.

 
Postado : 28/04/2016 1:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ViiSanches, sua dica tambem é valida, a diferença da que eu passei, é que utilizamos somente uma rotina e associamos a mesma a todos os checkbox, pois é capturado o nome do checkbox clicado. E as suas tem de associar cada uma a um checkbox separadamente, e outra coisa em suas rotinas é que elas não alteram a seleção do checkbox e sim desabilta, impedindo de seleciona-os novamente pois está usando a propriedade "Enabled ", para elas fazerem da forma que ele quer é só trocar por "Value"

[]s

 
Postado : 28/04/2016 3:14 pm
 May_
(@may_)
Posts: 0
New Member
Topic starter
 

Pessoal, muito obrigado!!! :D

 
Postado : 02/05/2016 12:18 pm