Ooooh.. I just tried this and it made a difference! It seems there is some undocumented interaction between Data Macro and bound objects to the same table. Temporarily unbinding it does seem to make performance back to expected. And re-binding the data source still keeps the state intact, e.g., the scrollbar and selected row in the listbox which is interesting!What happens if the button first sets the recordsource to "" in sense, making it unbound then runs the code? Could there be an issue with records being updated if a form that has a connection? You can rebind it after the code completes.
I'll have to give this idea a try in the production application and see how well it works. Thanks for the suggestion