VERSION (2)

Hello Opy:
This version does things a little cleaner... It examines what values are already in the Array to make sure each value is only entered once.

..... enjoy


Option Base 1
Public Sub FilterByVisibleContacts()
  Dim myArray()
  Dim DoneRng As Range
  
   ReDim Preserve myArray(1)
  
  For Each VisibleCell In Range("A:A").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 2)
     lp = lp + 1
     
     If NewValue(myArray, VisibleCell.Value) Then
        ReDim Preserve myArray(lp)
        myArray(lp) = VisibleCell.Value
     End If
  Next VisibleCell
  
  
  ActiveSheet.ShowAllData
  ActiveSheet.Range("$A:$F").AutoFilter Field:=1, Criteria1:=myArray, Operator:=xlFilterValues
  
  Set DoneRng = Nothing
End Sub

Public Function NewValue(myArray, CurrValue As String) As Boolean
   NewValue = True
   For i = 1 To UBound(myArray)
      If myArray(i) = CurrValue Then
         NewValue = False
         Exit Function
      End If
   Next i
End Function