Notifications
Clear all

Mudar a cor do batão ao cliclar

11 Posts
4 Usuários
0 Reactions
2,577 Visualizações
(@mardr)
Posts: 19
Active Member
Topic starter
 

Olá aos considerados membros do Planilhando

Tentei, mas em vão, fazer com que ao clicar em um botão, contido na planilha, o mesmo assuma uma cor personalizada , por exemplo .backcolor = RGB (64,64,64) diferente dos demais botões que estão na cor: .backcolor= RGB(128,128,128).
Gostaria, portanto, de desenvolver um código no qual ao se clicar no botão, o mesmo alterasse e assumisse a cor personalizada e ao se clicar em outro botão, esse botão anteriormente clicado, voltasse a cor original.
Será que consegui explicar o que eu pretendo?
Lembrando que não gostaria de usar o efeito MouseMov... ok
Segue a planilha de exemplo
Grato,

 
Postado : 12/01/2018 8:25 am
(@klarc28)
Posts: 971
Prominent Member
 

Esta forma é extensa e inviável para grandes quantidades de botões:

Private Sub Cbo_Atividades_Click()
If Cbo_Atividades.BackColor = RGB(128, 128, 128) Then
Cbo_Atividades.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

End If
End Sub

Private Sub Cbo_Faltas_Click()
If Cbo_Faltas.BackColor = RGB(128, 128, 128) Then
Cbo_Faltas.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

End If
End Sub

Private Sub Cbo_Grafico_Click()
If Cbo_Grafico.BackColor = RGB(128, 128, 128) Then
Cbo_Grafico.BackColor = RGB(64, 64, 64)

Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

End If
End Sub

Private Sub Cbo_Lista_Click()
If Cbo_Lista.BackColor = RGB(128, 128, 128) Then
Cbo_Lista.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

End If
End Sub

Private Sub Cbo_ListaChamada_Click()
If Cbo_ListaChamada.BackColor = RGB(128, 128, 128) Then
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

End If
End Sub

Private Sub Cbo_Notas_Click()
If Cbo_Notas.BackColor = RGB(128, 128, 128) Then
Cbo_Notas.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)

End If
End Sub
 
Postado : 12/01/2018 8:56 am
(@klarc28)
Posts: 971
Prominent Member
 

Esta forma é mais resumida e vale para grandes quantidades de botões:

Public nome As Integer

Sub Botao()

Dim Botao(6) As Object
Dim i, j As Integer
'
'
'
With Plan1
Set Botao(0) = .Cbo_Notas
Set Botao(1) = .Cbo_Faltas
Set Botao(2) = .Cbo_Atividades
Set Botao(3) = .Cbo_Lista
Set Botao(4) = .Cbo_ListaChamada
Set Botao(5) = .Cbo_Grafico

If Botao(nome).BackColor = RGB(64, 64, 64) Then
   Botao(nome).BackColor = RGB(128, 128, 128)
   Else
   Botao(nome).BackColor = RGB(64, 64, 64)
   End If

For i = 0 To 5

If nome <> i Then

If Botao(nome).BackColor = RGB(64, 64, 64) Then
   Botao(i).BackColor = RGB(128, 128, 128)
   Else
   Botao(i).BackColor = RGB(64, 64, 64)
   End If


End If

Next i
End With
End Sub




Private Sub Cbo_Atividades_Click()
nome = 0
Call Botao

End Sub

Private Sub Cbo_Faltas_Click()
nome = 1

Call Botao
End Sub

Private Sub Cbo_Grafico_Click()
nome = 2

Call Botao
End Sub

Private Sub Cbo_Lista_Click()
nome = 3

Call Botao
End Sub

Private Sub Cbo_ListaChamada_Click()
nome = 4

Call Botao
End Sub

Private Sub Cbo_Notas_Click()
nome = 5

Call Botao
End Sub
 
Postado : 12/01/2018 9:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Use nossa base
https://cse.google.com.br/cse?cx=partne ... cor+do+batão+ao+cliclar&sa=Pesquisar#gsc.tab=0&gsc.q=Mudar%20a%20cor%20do%20bat%C3%A3o%20ao%20cliclar%20vba

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/01/2018 9:41 am
(@mardr)
Posts: 19
Active Member
Topic starter
 

Olá Alexandre VBA
Apliquei as alteração, porém de fato, o único botão que realmente altera a cor ao clicar é o primeiro botão de "Cbo_Notas" os demais se altera de forma correta...
Segue a planilha com as modificações realizadas para sua análise
De antemão lhe agradeço pela sua colaboração

Grato,
Marcelo Adriano

 
Postado : 12/01/2018 10:00 am
(@klarc28)
Posts: 971
Prominent Member
 

A resposta está acima. Veja o anexo Alterar cores de botões 2

 
Postado : 12/01/2018 10:08 am
(@mardr)
Posts: 19
Active Member
Topic starter
 

Olá klarc28
Quando depuro o código no Editor VBE vejo o código sendo executado perfeitamente, porem , ao chamar a sub "Call Botão", na acontece...
Segue a planilha em questão..

De antemão lhe agradeço...

Att,
Marcelo Adriano

 
Postado : 12/01/2018 10:09 am
(@klarc28)
Posts: 971
Prominent Member
 

A resposta está acima. Veja o anexo Alterar cores de botões 2. Favor marcar como resolvido na parte que eu enviei.

 
Postado : 12/01/2018 10:12 am
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub Cbo_Atividades_Click()
If Cbo_Atividades.BackColor = RGB(128, 128, 128) Then
Cbo_Atividades.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

Else
Cbo_Atividades.BackColor = RGB(128, 128, 128)

Cbo_Grafico.BackColor = RGB(64, 64, 64)
Cbo_Faltas.BackColor = RGB(64, 64, 64)
Cbo_Lista.BackColor = RGB(64, 64, 64)
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)
Cbo_Notas.BackColor = RGB(64, 64, 64)

End If
End Sub

Private Sub Cbo_Faltas_Click()
If Cbo_Faltas.BackColor = RGB(128, 128, 128) Then
Cbo_Faltas.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)
Else
Cbo_Faltas.BackColor = RGB(128, 128, 128)

Cbo_Grafico.BackColor = RGB(64, 64, 64)
Cbo_Atividades.BackColor = RGB(64, 64, 64)
Cbo_Lista.BackColor = RGB(64, 64, 64)
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)
Cbo_Notas.BackColor = RGB(64, 64, 64)
End If
End Sub

Private Sub Cbo_Grafico_Click()
If Cbo_Grafico.BackColor = RGB(128, 128, 128) Then
Cbo_Grafico.BackColor = RGB(64, 64, 64)

Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)
Else
Cbo_Grafico.BackColor = RGB(128, 128, 128)

Cbo_Atividades.BackColor = RGB(64, 64, 64)
Cbo_Faltas.BackColor = RGB(64, 64, 64)
Cbo_Lista.BackColor = RGB(64, 64, 64)
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)
Cbo_Notas.BackColor = RGB(64, 64, 64)
End If
End Sub

Private Sub Cbo_Lista_Click()
If Cbo_Lista.BackColor = RGB(128, 128, 128) Then
Cbo_Lista.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)
Else
Cbo_Lista.BackColor = RGB(128, 128, 128)

Cbo_Grafico.BackColor = RGB(64, 64, 64)
Cbo_Faltas.BackColor = RGB(64, 64, 64)
Cbo_Atividades.BackColor = RGB(64, 64, 64)
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)
Cbo_Notas.BackColor = RGB(64, 64, 64)
End If
End Sub

Private Sub Cbo_ListaChamada_Click()
If Cbo_ListaChamada.BackColor = RGB(128, 128, 128) Then
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)
Cbo_Notas.BackColor = RGB(128, 128, 128)

Else
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)

Cbo_Grafico.BackColor = RGB(64, 64, 64)
Cbo_Faltas.BackColor = RGB(64, 64, 64)
Cbo_Atividades.BackColor = RGB(64, 64, 64)
Cbo_Lista.BackColor = RGB(64, 64, 64)
Cbo_Notas.BackColor = RGB(64, 64, 64)
End If
End Sub

Private Sub Cbo_Notas_Click()
If Cbo_Notas.BackColor = RGB(128, 128, 128) Then
Cbo_Notas.BackColor = RGB(64, 64, 64)

Cbo_Grafico.BackColor = RGB(128, 128, 128)
Cbo_Faltas.BackColor = RGB(128, 128, 128)
Cbo_Atividades.BackColor = RGB(128, 128, 128)
Cbo_ListaChamada.BackColor = RGB(128, 128, 128)
Cbo_Lista.BackColor = RGB(128, 128, 128)

Else
Cbo_Notas.BackColor = RGB(128, 128, 128)

Cbo_Grafico.BackColor = RGB(64, 64, 64)
Cbo_Faltas.BackColor = RGB(64, 64, 64)
Cbo_Atividades.BackColor = RGB(64, 64, 64)
Cbo_ListaChamada.BackColor = RGB(64, 64, 64)
Cbo_Lista.BackColor = RGB(64, 64, 64)
End If
End Sub
 
Postado : 12/01/2018 10:20 am
(@babdallas)
Posts: 85
Trusted Member
 

Veja se ajuda.

 
Postado : 12/01/2018 11:46 am
(@mardr)
Posts: 19
Active Member
Topic starter
 

Olá Badfallas
Obrigado pela sua colaboração, com códigos bem enxutos, resolveu o dilema!
Muito agradecido, a sua pessoa! Obrigado também pela participação dos membros: Alexandre VBA e do klarc28.
:-)

Att,
Marcelo Adriano

 
Postado : 12/01/2018 11:58 am