Hello,
You need to jump to the next visible cell, not just offset the row index. Use SpecialCells(xlCellTypeVisible) to find the first visible cell below the active one, then activate it. This macro does exactly that and respects filters.
Sub MoveDownOneVisible()
Dim startCell As Range
Dim nextVisible As Range
Set startCell = ActiveCell
On Error Resume Next
Set nextVisible = startCell.Offset(1, 0) _
.Resize(startCell.Parent.Rows.Count - startCell.Row, 1) _
.SpecialCells(xlCellTypeVisible)(1)
On Error GoTo 0
If Not nextVisible Is Nothing Then
nextVisible.Activate
End If
End Sub
It looks one row below the active cell, scans downward only in that column, takes the first cell that is visible, and activates it. If there is no visible row below, it leaves the selection as is. You can assign this macro to a shortcut key to mirror the Down arrow behavior on filtered lists.