Having a little trouble getting my head around this. First, reading through
the thread, if using the keyboard while running a macro 'screws things up',
there's something else awry.
The standard (and cleanest) way to interrupt VBA macro execution is hit Ctrl
& Break, repeatedly if necessary. A macro in this condition indicates that
it isn't releasing to the system often enough for other tasks to be polled.
DoEvents statements are supposed to allow your keystrokes to be serviced by
the OS. I think a key indicator of what you're facing, though, has to do
with the fact that you're talking to a serial port. These are tricky and I
note that a common issue with VB(A) and serial ports is that the COM port
controls hardly ever have decent handling of keyboard interrupts for any
purpose beyond injecting data in the stream to the port.
Take a look at getting a better control for handling your serial sessions.