Why not set the ProtectStructure Property of the workbook to TRUE. This will disallow the users from manually moving the sheets at all.
Then you could add a proc to move a sheet and in that proc you could amend your sub-totals in a controled manner.