I have a workbook I use for personal accounting with has a sheet for every month plus a couple of sheets that process and analyze data. In terms of complexity of formulas or the amount of data compiled, it's really a rather simple workbook. However it has a userform that is its primary interface, and which is rather complex with a lot of code behind it. All data entry is done there, and a lot of detail and ability to do a lot of things.

I don't think there's any need to post the code, but I certainly will if needed. The workbook works smoothly and very quickly, but its start-up time is abysmally slow. It seems like every tweak I attempt to speed things up slows it down instead. On my system (which is admittedly old—twin AMD 1.9 GHz processors, 8GB of RAM) the start-up time at last count was about 12 seconds. Also the WB is set to open minimized, Userform only on the screen—but it remains on screen until almost at the end of the start-up time, at which point it minimizes and the Userform pops up, with a hanging hourglass for another second or two.

If I comment out everything in the WorkbookOpen event, it does not change the start-up time, so I believe Excel must be "reading through" the code and "thinking about it" before it does anything at all. I know that's a silly and simplistic way to describe it, but I don't know any other way to explain the fact that altering WorkbookOpen doesn't change start-up time. Lately I've tried moving code that was stored in Macros directly to the form, or to buttons on the form, with the thought that maybe there was too much jumping from one module to another. As I mentioned, if anything this has seemed to make things worse.

So my questions:
  1. Am I correct that Excel reads through the code before activating the workbook?
  2. If so, how much of the code? Userform only? Macros? Everything?
  3. Will putting as much code as possible into discrete Macros slow things down? Speed them up? Make no difference?

Thanks for any advice/clarification you can offer.