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