The time-based method I showed isn't a perfect solution, but it limits the minimum frequency that DoEvents can run (in my example, at least 0.2s after the previous).

If the gap is larger (due to network delays etc), it will run immediately. Admittedly that could mean that just the first record shows to start with, then the next 51 or whatever... in cases like that I generally set NextTime just before the loop.


Using those two variations of the idea, I have yet to find a situation where it isn't at least equal to the Mod idea - and it takes no effort to work out (or guess) the frequency you want.