Here's one way to do this assuming that the subforms are never used outside
of the main form:
In design view of the main form, create a new procedure:
Menu - View - Code
A new window will open (Microsoft Visual Basic...)
In the VB window, go to:
Menu - Insert - Procedure (Sub & Public)
Give it a name like "Move2Sub1"
Two lines of code will be created for you, add another one in between:
Public Sub Move2Sub1()
DoCmd.GoToControl Me.SubForm1
End Sub
When you type "Me.", a list will appear. Select the one that corresponds to
the subform control's name. The subform control's name can be found by
selecting the subform in the main form in design mode and looking at the
subform properties. You'll have to do this for each subform. IOW, you'll
create 8 public procedures that move to a specific subform.
In a subform, create a procedure that is triggered by the last control's
AfterUpdate event:
Open the subform in design mode and select the last control (textbox) where
you want the focus to move to the next subform.
Open the properties window of the control (the icon looks like a finger
pointing at a list).
In the Event tab, select [Event Procedure] in the row After Update.
Click on the ... button at the end of the line and the VB window will open.
Two lines will be automatically created for you. In between those two lines,
enter:
Forms!MainFormName.Move2Sub1
Replace MainFormName with the actual name of the main form, and replace
Move2Sub1 with the appropriate procedure you created in part one. For
example, if this is the last control of the second subform and you want to
move the third subform, the procedure might be Move2Sub3.
You'll have to do this for every subform.
HTH