Happy Thanksgiving!

I have a workbook with multiple sheets, each being a self-contained printable log with data and stats. These stats need to be fetched from a website. Hence, I have a form with a webbrowser control and textbox fields corresponding to the stats area on the sheet. The fetching of stats from the webpage in browser control is automatic. I would rather not have to reopen the form for every sheet, in particular because the webbrowser control resets every time.

My idea was to have the open form detect a change in the worksheet in the background or to be able to switch the active worksheet in the form (ideally I would for both to be possible). The form is non-modal. Now the textboxes in the form (nearly 100) are hooked up to the sheets via the ControlSource property, and presently, changing the worksheets does not update the contents of the textboxes, BUT, new data is written to the new worksheet.

Hence my problem is getting the textbox data to update to reflect the new sheet. Me.Repaint does not work. Due to odd problems with the ControlSource method, I would like to get away from this as well, however I am dealing with a 100 textboxes as mentioned before, so I am not sure how to proceed.

To sum up, my specific questions are:
1) Is there an event that fires while inside a non-modal when the application worksheet is switched (or even the workbook)

2) Given twelve rows of text boxes, with 7 columns, how can I easily read and write data without resorting to writing each individually. Is there a way to create a two dimensional array that I can loop through?

Without solutions to both of these, I think I can accomplish what I am trying to do. Sorry to be so verbose, and thanks in advance for any ideas.

BW