Ir ao conteúdo

Posts recomendados

Postado

Boa noite galera,

Tô aqui me batendo com uma formula. Estou usando esse código abaixo pra que mude a cor da célula ao receber o foco, mas ele só altera ao ser clicado. Gostaria que alguém me ajude com um código que altere a cor da célula ao receber o foco e não ao ser clicado.

 

Código que estou usando:

 

Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Sheets("Geral").Unprotect "0"
'Update 20140923
Static xLastRng As Range
On Error Resume Next
On Error Resume Next
Target.Interior.ColorIndex = 2
xLastRng.Interior.ColorIndex = 36
Set xLastRng = Target
Sheets("Geral").Protect "0"
End Sub

 

De já meus agradecimentos a quem me ajudar

 

Paulo Cezar

Postado

@paulocezarpicos as celulas do Excel não tem o recurso de passar o mouse sobre, e executar uma ação. Acho que é isso que está se referindo ao dizer: receber o foco.

Apenas os componentes Active-x (textbox, label, combobox, frame, etc),  tem este recurso.

Nas celulas somente ao selecionar, o proprio nome do evento do exemplo que voce postou diz: SheetSelectionChange.

 

 

   

  • Curtir 1
Postado

Veja se é isso que precisa:

 

* Cole o código abaixo, no modulo planilha "Geral"

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static rngcolor As Range
    Static OldColor As Variant
    Dim rw As Long, cl As Long
    
  Sheets("Geral").Unprotect "0"
    If Not rngcolor Is Nothing Then
        If IsArray(OldColor) Then
            On Error GoTo NoRestore
            For rw = 1 To rngcolor.Rows.Count
                For cl = 1 To rngcolor.Columns.Count
                    If IsEmpty(OldColor(rw, cl)) Then
                        rngcolor.Cells(rw, cl).Interior.ColorIndex = xlNone
                    Else
                        rngcolor.Cells(rw, cl).Interior.Color = OldColor(rw, cl)
                    End If
                Next
            Next
            On Error GoTo 0
        Else
            If IsEmpty(OldColor) Then
                rngcolor.Interior.ColorIndex = xlNone
            Else
                rngcolor.Interior.Color = OldColor
            End If
        End If
    End If
NoRestore:
    On Error GoTo 0

    Set rngcolor = Target
    ReDim OldColor(1 To Target.Rows.Count, 1 To Target.Columns.Count)
    For rw = 1 To Target.Rows.Count
        For cl = 1 To Target.Columns.Count
            If Target.Cells(rw, cl).Interior.ColorIndex = xlNone Then
                OldColor(rw, cl) = Empty
            Else
                OldColor(rw, cl) = Target.Cells(rw, cl).Interior.Color
            End If
        Next
    Next
    rngcolor.Interior.Color = -4142
    Sheets("Geral").Protect "0"
End Sub

 

adaptado de: Change Cell color...

  • Curtir 1
Postado

Meu amigo  Basole a quanto tempo!!!!

 

Seus códigos como sempre num nível tão alto que eu como iniciante não entendo nada.

A macro está rodando exatamente como eu queria, isto é, quando recebe o foco a célula fica branca e quando sai o foco a célula volta a cor anterior. Só que isto está acontecendo em qualquer parte da planilha, menos nos campos onde vou inserir as informações.

 

Em anexo a planilha

Orçamento Kit Solar.zip

Postado
Citação

....menos nos campos onde vou inserir as informações

@paulocezarpicos muito obrigado por suas palavras !

 

Como eu não estou familarizado com seu negocio é preciso que seja mais especifico. 

Quais seriam esses campos ou intervalos ?

  • Curtir 1
Postado

 

Basole,

Essas células que estão em branco. B7:G7 - B9:D9 - F9:G9 - B11:C11 - E11:F11 - G11 - A14:D14 - E14:G14. Todas as celulas da planilha está acontecendo do jeito que eu quero, menos esses os campos acima. Os campos que vou inserir os dados.

Postado

Pois é..... Com o outro código estava tudo perfeito, só que quando eu usava uma macro de limpar campos, quando o cursor parava na primeira célula num ficava branca, ficava da cor do resto da planilha e eu quero que fique na cor branca, pois o cursor para nessa célula (B7:G7)

Postado

Basole,

Sei que tô abusando, mas num sei quando terei essa oportunidade de novo. Queria que essa macro que tratamos aqui atuasse somente na aba "Geral" (tá atrapalhando nas outras).

 

Obs.: Mande só as alterações que eu faço aqui.

 

De já meus agradecimentos

  • Curtir 1
  • Solução
Postado

@paulocezarpicos beleza segue o código com as alterações.

 

Abrx.

 

Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)

If ActiveSheet.Name <> "Geral" Then Exit Sub

Sheets("Geral").Unprotect "0"
Static xLastRng As Range
On Error Resume Next
On Error Resume Next

If Not Application.Intersect(taget, Range("B7:G7,B9:D9,F9:G9,B11:C11," & _
                            "E11:F11,G11,A14:D14,E14:G14")) Is Nothing Then
                            
Application.EnableEvents = False
Target.Interior.ColorIndex = 2
xLastRng.Interior.ColorIndex = 36
Set xLastRng = Target
Sheets("Geral").Protect "0"
Application.EnableEvents = True
End If
On Error GoTo 0

End Sub

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!