Como posso configurar uma “linha de realce congelada” no Excel?

0

Alguma sugestão sobre como configurar uma linha / janela horizontal de destaque que permaneça na mesma posição fixa na tela enquanto rola as linhas para cima e para baixo? O que eu tenho em mente é um tipo de painel de congelamento horizontal que permite que as linhas sejam destacadas quando elas passam por ele quando rolam. Para ser mais claro, digamos que agora eu tenho a linha 20 em destaque. Se eu rolar para baixo 1 linha, agora eu tenho a linha 21 em destaque, e assim por diante. Como se eu colocasse uma fita transparente colorida no meu monitor, e as linhas fiquem destacadas quando passarem por baixo dela. É possível configurar uma macro ou um código VBA para fazer isso?

    
por design95 04.12.2017 / 09:05

2 respostas

0

O principal desafio é detectar o evento de rolagem ( detalhes no CPearson.com )

Se você quiser rolar usando as setas para cima e para baixo (somente teclado), tente o código abaixo

No módulo ThisWorkbook, adicione:

Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    HighlightCurrentRow Sh, Target
    Application.EnableEvents = True
End Sub

Em um módulo padrão, adicione:

Option Explicit

Public Sub HighlightCurrentRow(ByVal Sh As Object, ByVal Target As Range)
    Dim ur As Range, thisRow As Long, prevRow As Long, found As Range
    Dim back1 As Long, fore1 As Long, back2 As Long, fore2 As Long

    back2 = RGB(111, 0, 0)      'Background color - dark red
    fore2 = RGB(255, 255, 0)    'Foreground color - yellow

    Set ur = Sh.UsedRange
    thisRow = Target.Row

    Application.FindFormat.Interior.Color = back2
    Set found = ur.Cells.Find(What:="", After:=ur.Cells(1), SearchFormat:=True)

    If Not found Is Nothing Then
        prevRow = IIf(found.Row < ur.Rows.Count, found.Row + 1, found.Row - 1)
        back1 = ur.Cells(prevRow, ur(1).Column).Interior.Color
        fore1 = ur.Cells(prevRow, ur(1).Column).Font.Color
        ur.Rows(found.Row).Interior.Color = back1
        ur.Rows(found.Row).Font.Color = fore1
    End If

    If Target.Row > 1 And Not Intersect(ur, Target) Is Nothing Then
        If thisRow > 15 Then Application.ActiveWindow.ScrollRow = thisRow - 15
        ur.Rows(thisRow).Interior.Color = back2
        ur.Rows(thisRow).Font.Color = fore2
    End If
End Sub

Agora, em qualquer planilha, quando você clica em uma célula com dados, a linha inteira é destacada com fundo vermelho escuro e fonte amarela

Se a célula ativa estiver na linha 16 ou superior, a janela rolará para cima ou para baixo (a linha de rolagem será compensada por 15 linhas) e a linha ativa será realçada, mas se a célula estiver fora do UsedRange, nenhuma linha será ser destacado

    
por 05.12.2017 / 01:23
0

@ design95, na sua demanda Eu gostaria de mostrar a você que como você pode destacar a cada 20ª linha, contar a partir da linha 1.

Siga estes passos.

  1. Selecione o Intervalo de dados como (A1: Az1000).
  2. Vá para a formatação condicional.
  3. Clique em Nova regra & selecione a opção Usar fórmula que formata.
  4. Escreva esta fórmula.

= AND (($ A1 = 1), MOD (ROW ($ A1), 20 ) = 0)

  1. Por fim, selecione a cor de preenchimento & outros.

NB: O valor 20 é o número da linha, pode ser substituído por outro conforme a sua necessidade.

A seguir, como destacar a linha que você selecionou ou a linha ativa.

Siga os quatro passos anteriores e escreva esta fórmula,

= CELL ("row") = ROW ()

Termine com a seleção de Cores e outros.

O último é, clique com o botão direito na aba de planilhas, clique em View Code e escreva este código simples.

Private Sub Worksheet_SelectionChange (intervalo ByVal Target As)

Application.Calculate

End Sub

Espero que isso ajude você. Solte seu comentário.

    
por 09.12.2017 / 08:15