This kind of behaviour may happen when spreadsheets needs to be activated in order for the code to run properly. In some cases debugging step by step does select or activate needed sheets, while running everything at once tries to access protected place in memory and so on because the proper sheet isn't activated. (By the way, that is one reason why a code should never -or nearly so- rely on a sheet being selected or activated.)
When this happen to me, I put breakpoint in my code to try to locate the exact place it fails. Put a breakpoint in the middle of your code. Run the code (not in debug mode). If you get your failure error, put a breakpoint earlier on; if you don't get the failure error, remove your previous breakpoint and put a new one later on. And so on, until you find out the exact line that makes it fail.
This is strenuous but might give you an idea of the nature of the error. Once you have located the line, the first thing I'd check is whether you use something like "cells" or "range" without precision about the workbook or the sheet it refers too. Alternatively, if you are in the middle of a "With workbook ...", check that you have ".cells" or ".range" everywhere and not just "cells" and "range".
Hope this helps,
Nath