I am struggling to understand the sequence of events when a textbox is updated.

This is what I have to do:

Provide a form reflecting values in several worksheets.
Record changes both in the relevant worksheet, and also in another worksheet for updates to a DB.
If it's the first change to that field, write a new row in the updates sheet, otherwise
overwrite the previous update (i.e. you get original value and most recent value)

I am populating the checkboxes by setting their controlsource property to a given cell
When the textbox loses focus (the beforeupdate event), it seems that the boundValue is at once
the same as the new value. The value of the cell used for the controlsource has also changed (of course)

When I try this with a textbox without a controlsource, the boundvalue is as expected the old value.

I really need the old value. Any ideas how I can get the boundValue to work as I would like?