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
Bookmarks