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!


Nome do Autor

Sobre o autor

Flávio Santos é o editor-chefe do Tecla Ti. Vice campeão de todas as Américas em Tecnologia da Informação pela Worldskills Americas. Especialista Microsoft Office, programador VBA, C, JAVA, PHP e desenvolvedor de aplicações. Leia Mais sobre o autor >>>

34 comentários:

Olá Flávio.

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

Show de bola.

Forte abraço!!!

Mais uma vez luiz, obrigado pelos elogios.

Precisando, o blog é todo seu!

Abraços

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

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!

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

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.

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

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

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

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.

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.

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 ?

Prezado.

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

Obrigado.

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?

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

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!

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.

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.

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...

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

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

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

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

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

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!!

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?

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

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 ?

Parabéns! Gostei desse VBA. Funcionou perfeitamente.

André Zani

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

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

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

Postar um comentário