Some questions
1. Is LBound(csColumns) always zero? If not, don't believe you can .Add beyond header count+1
2. in goOptions class, do you have error handling in the GetOfferColumns routine? If so, that could explain why the msgbox is not fired as expected.
3. in goOptions, does GetOfferColumns use an array also? Could the error be happening in there?

Why it is happening compiled vs IDE is interesting, but probably not that important at this point.