I was strictly looking at the ADO Filter method as a replacement for the DAO Find method. I very seldom use recordset filtering, but instead requery with a different SQL select criteria. The Filter method works very well if you want to pick out subset of a recordset and is accumulative so that you could make finer and finer subsets.
The Filter can be turned off by
Set rst.Filter = adFilterNone
and then it is back to the unfiltered recordset.
The Filter could be used for something like a temporary mod to the recordset for a certain purpose. Lets say there was not sufficient information to categorize the recordset in the query, but by looping through the recordset and changing a field the category could be set in each record and then filtered or sorted and then displayed or whatever the need. First disconnect the recordset so that it does not update the source, then loop through and add a sequence number and category and then sort by the category or filter as needed and then display and then destroy the recordset.
Another use is in place of a complex or multi dimensional array. You could make a temporary recordset and then use the Sort and Filter. Here is an example.
Dim rs As ADODB.Recordset
Dim varArray As Variant
Set rs = New ADODB.Recordset
With rs.Fields
.Append "myid", adInteger
.Append "mydesc", adVarChar, 50, adFldIsNullable
End With
varArray = Array("myid", "mydesc"
With rs
.Open
.AddNew varArray, Array(1, "first desc"

.AddNew varArray, Array(2, "second desc"

.AddNew varArray, Array(3, "third desc"

.AddNew varArray, Array(4, "fourth desc"

End With
rs.MoveFirst
While Not rs.EOF
Debug.Print rs!myid; " "; rs!mydesc
rs.MoveNext
Wend
rs.Sort = "myid DESC"
rs.MoveFirst
While Not rs.EOF
Debug.Print rs!myid; " "; rs!mydesc
rs.MoveNext
Wend
rs.Filter = "myid = 3"
rs.MoveFirst
While Not rs.EOF
Debug.Print rs!myid; " "; rs!mydesc
rs.MoveNext
Wend
rs.Filter = adFilterNone
rs.Close
Set rs = Nothing