Destacar Linha de Célula Selecionada Excel

Nesse post: Destacar Célula Ativa foi mostrado com destacar a célula ativa do Excel. Agora, vou mostrar como destacar a linha da célula ativa, determinando o intervalo que será destacado.

Primeiro passo, vá no editor VBA do Excel e dê duplo em "Esta pasta de Trabalho", que fica à esquerda do Monitor.


Feito isso, insira o seguinte código VBA lá:

Dim Linha As Long 'Variavel global
'Função que colore a linha da celula atualmente selecionada
Private Sub Workbook_Activate()
    On Error Resume Next
    Linha = ActiveCell.Row 'Variavel global recebe a o numero da linha atualmente selecionada
    Range(Cells(Linha, 2), Cells(Linha, 7)).Interior.ColorIndex = 6 'Destaca linha
End Sub

'Função para limpar a linha antes de colorir a proxima selecao
Private Sub Workbook_Deactivate()
    On Error Resume Next
    Range(Cells(Linha, 2), Cells(Linha, 7)).Interior.ColorIndex = xlNone 'limpa a cor anterior
End Sub

'Chamada das respectivas funções toda vez que uma nova célula é selecionada
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

   Call Workbook_Deactivate
   Call Workbook_Activate
End Sub

Copie o código acima e insira no local anteriormente especificado.

Feito isso, toda vez que você selecionar uma nova célula na sua planilha, esta terá sua linha destacada das colunas B até G.

Caso você deseje alterar o intervalo das colunas que serão destacadas nas linhas, basta mudar os valores dentro de "Cells(linha,2)" e de "Cells(linha,7)". Por exemplo, se você deseja que fique selecionado de A até H sempre que uma célula for selecionada, basta mudar para "Cells(linha,1)" e "Cells(linha,8)".

Para mudar a cor de fundo de quando a linha é selecionada, basta mudar o valor que o "Range" está recebendo, ou seja, colocar outro valor no lugar do 6. Por exemplo, a cor vermelha é 3, então para ficar com a linha em vermelho, basta trocar o 6 por 3.

Dica rápida e prática. Segue o link da planilha com essa dica funcionando e com código livre para edição: Destaca Linha de Celula Ativa.xls

Como sempre: Bom divertimento!

38 comentários:

  1. Olá Flávio.

    Venho parabeniza-lo por este trabalho. Este recurso funcionou perfeitamente.

    Show de bola.

    Forte abraço!!!

    ResponderExcluir
  2. Mais uma vez luiz, obrigado pelos elogios.

    Precisando, o blog é todo seu!

    Abraços

    ResponderExcluir
  3. Olá Flávio,
    Realmente, suas dicas são excelentes. Parabéns. Vc facilita a vida de muita gente.
    Agora me diga, é possível que este comando não apague a cor que estava na linha, antes do comando colorir a linha? Ou que, se apagar, quando eu trocar de linha outro comando volte a cor original da linha.
    Não sei se me fiz entender.
    Um abraço,
    Lima

    ResponderExcluir
  4. Ficou um pouco estranho seu questionamento. Mas em suma, acho que você gostaria que as linhas que voce fosse clicando permanecessem com a cor? É isso?

    Se for isso, basta você no lugar da linha de comando:

    Call Workbook_Deactivate

    Substituir ela por:

    'Call Workbook_Deactivate

    Imagino que isso resolverá, caso seja essa sua dúvida.

    E muito obrigado pelos elogios!

    ResponderExcluir
  5. Como fazer para que a função funcione em apenas uma das planilhas da pasta de trabalho

    ResponderExcluir
  6. Basta você colocar um condicional, por exemplo:

    IF activesheet.name <> "[nome da sua planilha]" THEN
    end sub
    END IF

    O código acima faz com que se a sua planilha não for a que você quer que funcione a formatação, ele não faz.

    Caso você não consiga aplicar, em Colaboradores, no topo do site, tem meus contatos. Basta me adicionar e tentarei ajudar você de forma mais clara.

    ResponderExcluir
  7. Olá Alguem pode me ajudar?

    não funcionou pra mim..

    Eu preciso que funcione apenas em determinada planilha, porém não sei onde acrescentar a função:

    IF activesheet.name <> "[nome da sua planilha]" THEN
    end sub
    END IF

    obrigado

    ResponderExcluir
  8. Companheiro, todo esse código que está na postagem deve ser colocado no editor VBA do Excel.

    Tal editor pode ser acessado através da tecla de atalho ALT+F11

    ResponderExcluir
  9. Olá Flavio !!!

    muito bacana esse comando era relamente o que eu precisava ....

    porém ... quando seleciono a linha ela apaga a cor anterior da linha, não gostaria que isso acontecesse ... como faço ??

    grato

    ResponderExcluir
  10. Companheiro, nesse caso basta você pegar o rgb da cor anterior e quando alternar de uma célula para outra pedir para ele pintar a que você tava antes com a cor que você deseja.

    Dessa forma sempre vai parecer que ele só tá marcando a atualmente selecionada.

    Ou seja, nessa parte do código:

    Range(Cells(Linha, 2), Cells(Linha, 7)).Interior.ColorIndex = xlNone 'limpa a cor

    voce substitui xlNone por RGB(255,0,0) por exemplo se você quisesse que sempre ficasse em vermelho sua célula.

    ResponderExcluir
  11. Mariana Fernandes28 de maio de 2012 22:19

    O meu questionamento seria sobre a seleção.
    Gostaria de realçar a linha selecionada, porém após a seleção gostaria que a mesma voltasse a ter a cor anterior a seleção.

    ResponderExcluir
  12. Tenho um problema parecido que não descubro solução.

    Tenho uma planilha com 260 linhas, sobre cada linha já existe um VBA que pega os dados das colunas e efetua o cálculo. Eu gostaria de selecionar e mandar calcular apenas as linhas com erro e não todas as 260.

    Como fazer que o VBA descubra quais linhas estão selecionadas ?

    ResponderExcluir
  13. Prezado.

    Há alguma forma de recuperar, em uma determinada célula, a última linha ocupada da planilha sem usar o VBA?

    Obrigado.

    ResponderExcluir
  14. Boa tarde pessoal!!!

    Como faço para que fique destacada somente a célula que está selecionada e quando passar para qualquer outra célula essa passará a ficar em destaque e a anterior volta para a ficar sem cor?

    ResponderExcluir
  15. Fala Flávio Santos, td bem, boa tarde!
    Primeiramente parabéns pelo trabalho, esta excelente;
    Tô precisando de um auxilio, veja se pode me ajudar!
    Preciso fazer esta mesmo processo, de uma forma que ao selecionar uma célula, seja destacada a LINHA e também a COLUNA de referencia desta célula, como devo proceder; Já tentei de varias maneiras e não consegui; Obrigado!

    José Ronei

    ResponderExcluir
  16. Caro José,

    Entre em contato comigo através de algum dos meus emails disponíveis em "Colaboradores" no topo do site.

    Prometo que tentarei ajudá-lo da melhor forma possível. Abs!

    ResponderExcluir
  17. Eu entendi o que ele quer e não é o que você explicou.
    Ele quer o que eu também quero! =D

    Voltar a cor original da linha antes de passar por ela.
    Exemplo: A cor de certa célula era verde, daí colocamos esta função e ao passar por esta célula fica amarela, dai quando saí desta célula fica incolor! Ele quer que volte a cor verde inicial.

    ResponderExcluir
  18. olá flavio. toda vez que eu abrir o excel, tenho que adicionar o codigo vba? queria pode deixar a ação salva. se tiver como fazer me ajude.

    ResponderExcluir
  19. Boa tarde, agradeço e funcionou corretamente, mas, na minha situação pretendia mudar a cor da linha e da coluna! Como faço isso???
    Help...

    ResponderExcluir
  20. Está quase perfeita, o único problema que achei é que se vc proteger a planilha em alguns celulas, não funciona

    ResponderExcluir
  21. Coloquei uma formatação condicional nas colunas que eu precisava que ficasse com a cor original... Funcionou perfeitamente :D

    ResponderExcluir
  22. Parece brincadeira, mas 3 ANOS depois ainda precisamos da sua ajuda. Parabéns tutorial. Muito fácil com suas explicações.

    ResponderExcluir
  23. Eu preciso que funcione apenas em determinada planilha, porém não sei onde acrescentar a função:

    IF activesheet.name <> "[nome da sua planilha]" THEN
    end sub
    END IF

    Tentei colocar no inicio, porém dá a mensagem "Erro de compilação: Inváldo fora de um procedimento

    ResponderExcluir
  24. Muito obrigado mesmo!!! Ajuda demais com as milhares de linha que trabalho...e vc foi o ÚNICO que postou a solução!
    Vlw
    Best Regards

    ResponderExcluir
  25. Muito bom.... ótima solução...
    Saberia fazer as linhas voltarem para a cor anterior?
    Ex:. A linha esta verde, quando destacamos com o jeito que vc fez, ela se torna amarela e ao mudar novamente ela fica sem cor. Como voltar para a cor anterior (no caso do exemplo, verde)?
    Obrigado!!

    ResponderExcluir
  26. Flávio parabéns por nos ajudar. Foi como eu esperava. Agora a minha pergunta é se tem como salvar essa macro em vba para usar toda vez que abrir o excel?

    ResponderExcluir
  27. Muito bom! Valeu pela dica!

    ResponderExcluir
  28. Alguém sabe dizer se já existe uma alternativa para que não seja alterada a cor da célula após saída da seleção? Somente a função de destacar a célula selecionada sem alterar as cores iniciais. Obrigada

    ResponderExcluir
  29. Eu preciso que funcione apenas em determinada planilha, porém não sei onde acrescentar a função:

    IF activesheet.name <> "[nome da sua planilha]" THEN
    end sub
    END IF

    Tentei colocar no inicio, porém dá a mensagem "Erro de compilação: Inváldo fora de um procedimento

    Alem disso como faço para o vba rodar em uma planilha bloqueada ?

    ResponderExcluir
  30. Parabéns! Gostei desse VBA. Funcionou perfeitamente.

    André Zani

    ResponderExcluir
  31. Parabéns mano, vc foi o unico q resolveu meu problema

    ResponderExcluir
  32. muito bom! Mas como faço para aplicar apenas em uma das abas?

    ResponderExcluir
  33. Para manter a formatação anterior é só usar formatação condicional para as celulas que vc quer manter a cor

    ResponderExcluir
  34. Boa tarde, coloquei e rodou numa boa, porém no mesmo arquivo tenho mais umas 40 pastas e quando clico em um célula de outra pasta acaba mudando as cores das outras planilhas, como faço para rodas numa planilha específica?

    ResponderExcluir
  35. Boa tarde, para quem quer que funcione em uma planilha específica, o código fica assim:

    'Função que colore a linha da celula atualmente selecionada
    Private Sub Workbook_Activate()
    On Error Resume Next
    If ActiveSheet.Name = "CUSTOS" Then
    Linha = ActiveCell.Row 'Variavel global recebe a o numero da linha atualmente selecionada
    Range(Cells(Linha, 1), Cells(Linha, 25)).Interior.ColorIndex = 6 'Destaca linha
    End If
    End Sub

    'Função para limpar a linha antes de colorir a proxima selecao
    Private Sub Workbook_Deactivate()
    On Error Resume Next
    If ActiveSheet.Name = "CUSTOS" Then
    Range(Cells(Linha, 1), Cells(Linha, 25)).Interior.ColorIndex = xlNone 'limpa a cor anterior
    End If
    End Sub

    'Chamada das respectivas funções toda vez que uma nova célula é selecionada
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    Call Workbook_Deactivate
    Call Workbook_Activate
    End Sub

    Substitua a palavra "CUSTOS" pelo nome da planilha na qual você quer que o código funcione.
    No meu caso, a planilha se chama CUSTOS.

    Muito bom tutorial, me ajudou bastante.

    ResponderExcluir