The simplest reports every 100th record in the loop like this: If you use Seek or one of the Find methods (Find First, Find Last, Find Next, Find Previous), and do not test No Match, your code will appear to work until you strike a case where the find failed.
Always test for No Match after using Seek or a Find method.
Test for EOF (or BOF if moving backwards) before checking the real exit condition for your loop. VBA is more forgiving than most other languages: just press Ctrl Break to break out of the loop.
Use this construct for looping through Access recordsets: When looping through records, it is easy to create an endless loop by omitting the line rst. Even in a quick'n'dirty procedure, a progress indicator lets you know if a loop is stuck.
See Solving Problems with Library References for details. To ensure your code works reliably: There are different types of DAO recordset, with different methods.
When you Open Recordset() on a query or attached table, Access defaults to a Dynaset type (db Open Dynaset).
Many professional developers avoid the complex data types, believing they introduce more problems than they solve.When you Open Recordset() on a local table, it defaults to a Table type (db Open Table.) The Table type has different methods (e.g.Seek instead of Find First), but it cannot be used with attached tables.This forces Access to wait while all records load, so the Record Count reflects the entire recordset.Don't Move Last unless you really need to: this will be slow with a large recordset or a recordset drawn across a network.