What about just using the Worksheet_Activate event on the sheet that contains the TOC. It won't update immediately when a sheet is deleted, but what does that matter if you are not looking at the TOC sheet?
If it does matter, because, say, you might print without activating the TOC sheet, then try using, in the ThisWorkbook module, something like this?
<font face=Courier New><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> Workbook_SheetActivate(<SPAN style="color:#00007F">ByVal</SPAN> Sh <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Object</SPAN>)<br> <SPAN style="color:#007F00">' TOC refresh</SPAN><br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN></FONT>
This will run every time a sheet is activated but, unless the code is slow, it shouldn't be noticeable. At least every time a sheet is deleted (manually), a different sheet is activated so the code would run.