quarta-feira, 29 de agosto de 2012

Destacar a linha da célula ativa no Excel

Quem utiliza o Excel como fonte de dados para um cadastro ou conferência, sabe do que estou falando. Costumo trabalhar com o Excel ocupando metade da tela do monitor, e na outra metade mantenho a tela de outro programa aberto. Desta maneira, visualizo dados no Excel e comparo com os dados do outro programa em uso. Há momentos em que é tentador apoiar o dedo na tela do monitor apontando para uma linha do Excel, ao mesmo tempo em que digito dados no outro programa.

Resolvi pesquisar no Google e encontrei a solução aqui:
http://www.exceldoseujeito.com.br/2008/10/04/destacar-a-linha-selecionada-alterando-a-cor-de-fundo/

Neste artigo há um exemplo para download, onde é possível entender o funcionamento.

Passo a passo
Com seu arquivo aberto, clique em Ferramentas/Macro/Editor do Visual Basic.
No Visual Basic localize na estrutura do lado esquerdo o seguinte caminho: VBAProject (nome do seu arquivo) / Microsoft Excel Objetos / (nome da planilha que você quer o recurso ativado)
Clique duas vezes neste caminho e na tela da direita "cole" o código que encontra-se no final deste post. Pronto. Caso queira mudar a cor da linha destacada, procure dentro do código a seguinte expressão:

Rows(ActiveCell.Row).Interior.ColorIndex = 15

O número 15 indica a cor, e você pode alterar este valor para outra cor de sua preferência utilizando a tabela abaixo:

(fonte da tabela: http://www.dicasdeexcel.com.br/2009/05/15/codigo-de-cores-no-vba/)


Código
Dim LinhaSelecAnterior As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case ActiveCell.Row

Case 1, 2
'Coloque neste 'case' as linhas que não devem ser
'destacadas na seleção
'Exemplo: Linhas de título; Aqui eu defini como as linhas 1 e 2

'Remove cor de fundo da linha selecionada anteriormente
Select Case LinhaSelecAnterior.Row

Case Is <> 1, 2

Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0

End Select

Case Else

'Altera a cor de fundo da linha selecionada
Rows(ActiveCell.Row).Interior.ColorIndex = 15

'Remove a cor de fundo quando a linha perde a seleção
If Not LinhaSelecAnterior Is Nothing Then

'Verifica se a linha atual já estava selecionada
'neste momento, caso seja uma nova linha selecionada
'remove a cor de fundo.
If ActiveCell.Row <> LinhaSelecAnterior.Row Then

Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0

End If

End If

'Inicializa a variavel informando a seleção atual
'que será utilizada no inicio do procedimento
'como sendo a seleção anterior
Set LinhaSelecAnterior = ActiveCell

End Select

End Sub

6 comentários:

  1. Excelente dica. Só que voce perde formatações pontuais. No caso de formatações condicionais ou formatações prontas de tabela, é preservado neste comando.

    ResponderExcluir
    Respostas
    1. Sim, ẽ verdade. Infelizmente se perde mesmo a formatação.

      Excluir
  2. Boa opção, mas, não se consegue utilizar o ctrl+c ctrl+v, tem um comando na instrução que apaga a cópia na célula de destino.

    ResponderExcluir
  3. Ir sobre as colunas, como escolher a quantidade de colunas.
    Estou na dúvida

    ResponderExcluir
  4. MUITO BOM EXCELENTE....

    ResponderExcluir

Comentários ofensivos, discriminatórios, que denigram pessoas, empresas, instituições não serão publicados.