Because Ranges are also involved in the tab order
So TabToControl and or TabToRange. I suppose the Range could be on a different sheet than sheet Tabbed From.

If you take the 'Tables Sheet' Sheet and change its CodeName to 'TableSht', or whatever, then you can treat the 'TableSht' Code Page like a Class module with User Defined Properties that can return Objects and Arrays. Note that 'tableSht' is a Class Object, as well as a Worksheet. Use 'Tablesht&dot' (TableSht.) in code to reference any Custom Properties as well as any Worksheet Items. In Code, Sheets("Tables Sheet") should only reference Sheet Items.

My first thought was to set a global Variable to "CurrentControl" whenever a control is activated, then use a Select Case to call a 'TabKeyDown' sub with all required parameters. Those parameters can be returned by the TableSht Properties.

Unless there is a compelling reason to make all the Procedure names and parameters available to Users, I would just 'hardwire' it all in Code