Notifications
Clear all

Desativar Botão com condições

4 Posts
3 Usuários
0 Reactions
720 Visualizações
(@giorgioq)
Posts: 9
Active Member
Topic starter
 

Gostaria de uma ajuda aqui...
Quero cirar uma macro q ira ativar e desativar uns botoes de uma planilha da seguinte forma

na Plan1, quando a celula A1 for "" entao, ele vai deixar os botoes da Plan2 da seguinte forma - Botao1 - ativado, Botao2 - desativado
e caso A1 for diferente de "" acontecerá o contrário - Botao1 desativado, Botao2 ativado

o meu codigo está assim:
If Sheets("Plan1").Range("A1") = "" Then
Sheets("Plan2").Botao1.ForeColor = &H80000012 'texto preto
Sheets("Plan2").Botao1.Enabled = True
Sheets("Plan2").Botao2.ForeColor = &H8000000C 'texto cinza
Sheets("Plan2").Botao2.Enabled = False
Else
Sheets("Plan2").Botao2.ForeColor = &H80000012
Sheets("Plan2").Botao2.Enabled = True
Sheets("Plan2").Botao1.ForeColor = &H8000000C
Sheets("Plan2").Botao1.Enabled = False
End If

agora preciso executar esse comando automaticamente sempre q houver alguma alteraçao em A1 da Plan1

 
Postado : 30/05/2014 2:09 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

nesse caso, uso o evento de planilha worksheet change, vai ficar assim:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
    If Sheets("Plan1").Range("A1") = "" Then
        Sheets("Plan2").Botao1.ForeColor = &H80000012 'texto preto
        Sheets("Plan2").Botao1.Enabled = True
        Sheets("Plan2").Botao2.ForeColor = &H8000000C 'texto cinza
        Sheets("Plan2").Botao2.Enabled = False
    Else
        Sheets("Plan2").Botao2.ForeColor = &H80000012
        Sheets("Plan2").Botao2.Enabled = True
        Sheets("Plan2").Botao1.ForeColor = &H8000000C
        Sheets("Plan2").Botao1.Enabled = False
    End If
End If
End Sub

Leia:

http://www.cavalcanteassociados.com.br/ ... php?id=420
http://msdn.microsoft.com/pt-br/library/office/ff839775(v=office.15).aspx

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 30/05/2014 2:28 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

giorgioq,

Boa Tarde!

Beleza! Seu código está correto. Para que ele dispare automaticamente sempre que houver alteração da célula A1, você só precisa colocar ele dentro do evento Change da Plan1 e acrescentar mais umas linhas de código, tipo isso:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = "$A$1" Then
        If Sheets("Plan1").Range("A1") = "" Then
            Sheets("Plan2").Botao1.ForeColor = &H80000012 'texto preto
            Sheets("Plan2").Botao1.Enabled = True
            Sheets("Plan2").Botao2.ForeColor = &H8000000C 'texto cinza
            Sheets("Plan2").Botao2.Enabled = False
        Else
            Sheets("Plan2").Botao2.ForeColor = &H80000012
            Sheets("Plan2").Botao2.Enabled = True
            Sheets("Plan2").Botao1.ForeColor = &H8000000C
            Sheets("Plan2").Botao1.Enabled = False
            
        End If
    End If
    Application.EnableEvents = True
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 30/05/2014 2:33 pm
(@giorgioq)
Posts: 9
Active Member
Topic starter
 

Testei os as duas opções e a segunda funcionou.
Vlw pela ajuda!

 
Postado : 30/05/2014 2:47 pm