A mio avviso dovresti gestire l'evento CURRENT di MASCHERA, nel quale puoi determinare la condizione che io non conosco per lo switch...!
Private Sub Form_Current()
If Me!NomeCampo=XXX Then
Me!sfcontrol.SourceObject = "MiaProssimaSottoMaschera1"
Me!sfcontrol.LinkChildFields = ""
Me!sfcontrol.LinkMasterFields = ""
Me!sfcontrol.LinkChildFields = "CampoInSottomaschera1"
Me!sfcontrol.LinkMasterFields = "CampoInMascheraPrincipale1"
ElseIf Me!NomeCampo=YYY Then
Me!sfcontrol.SourceObject = "MiaProssimaSottoMaschera2"
Me!sfcontrol.LinkChildFields = ""
Me!sfcontrol.LinkMasterFields = ""
Me!sfcontrol.LinkChildFields = "CampoInSottomaschera2"
Me!sfcontrol.LinkMasterFields = "CampoInMascheraPrincipale2"
End If
End Sub
Chiaramente devi sapere TU, e solo tu, cosa scrivere in quei testi per far funzionare la cosa...
Rimango tuttavia MOLTO PERPLESSO che veramente serva una cosa simile... ho più il sospetto che tu abbia creato N SUBFORM in modo ERRATO... ma non ci hai dato modo di capirlo...