The .Filter property of a Recordset is one of the slowest ways of selecting a subset of data, unless the set of records is extremely small. A far better way to subset data is to open the table directly, specify an index that has the data sorted on the criteria that you wish to specify and then seeking to that location (see tip #1).
If you don't have an appropriate index, or the criteria is complex, then create a new query and specify an appropriate WHERE clause. Running this new query will be faster than recreating a new recordset based on the existing recordset.
As a general rule, you should not use the .Filter property on any set of rows that have more than 100 records.