Вам вообще ничего не нужно делать, поскольку подчиненная форма сохраняется, как только теряет фокус (когда изменяется элемент управления вкладками).
Но в качестве упражнения я обрисовал код, который вы написали бы, если бы вам было нужно.
Вы можете сохранить любую форму, установив для свойства .Dirty значение False. Для чего-то такого, что будет много работать, я думаю, я бы написал подпрограмму, чтобы пройтись по подчиненным формам, проверить, нет ли в них грязных, и сохранить грязные. Как то так:
Public Sub SaveSubFormsOnTab()
Dim pge As Control
Dim ctl As Control
For Each pge In Me!ctlTab.Pages
Debug.Print pge.Name
For Each ctl In pge.Controls
If ctl.ControlType = acSubform Then
If ctl.Form.Dirty Then
ctl.Form.Dirty = False
End If
Debug.Print ctl.Name
End If
Next ctl
Next pge
Set ctl = Nothing
Set pge = Nothing
End Sub
Теперь это на самом деле довольно неэффективно в тех случаях, когда у вас есть много элементов управления на вкладке, которые не являются подчиненными. Если ваша вкладка содержит только подчиненные формы, она будет довольно эффективной. В любом случае гораздо эффективнее использовать пользовательскую коллекцию, заполненную в событии OnLoad формы, и затем вы пройдете эту коллекцию, которая не содержит ничего, кроме подчиненных форм элемента управления вкладкой, и сохраните любую, которая является грязной.
Любой из них предпочтительнее использования события OnChange на вкладке, поскольку каждый раз, когда вы добавляете страницу вкладки с подчиненной формой или изменяете имя элемента управления подчиненной формы, вам придется изменять событие OnChange.