You would have to go multithreaded for that. DoEvents does not take care of such things. It just stops executing your code at the current position to handle messages in your app's queue, after which it returns at the position it left off. There's no way that you can have a single thread executing two sections of code simultaneously.
You can put the function to be called in an out-of-proc COM server and have it executed asynchronous there. But since this function is being called in a loop, it might have to create much objects to be executed all at the same time.
Greetings,
Rick