I already have in this thread.
Create five empty subforms, no scroll bars, no navigation buttons, no headers or footers, etc. all of a size of to accommodate your subject subforms and just being gray (or what ever color) holes in each and place on you MainForm, setting the appropriate Master/child Links of each subform. The Master/Child Links can be set dynamically, if necessary, i.e.
FormsMainform!sform1.LinkMasterFields = "PropID"
FormsMainform!sform1.LinkChilds = "PropID"
On the OnOpen event of the form, change the Source Object of each form to the to the name of the appropriate 1st set of subform.
Subsequently, on some event, change them again as appropriate.
Example:
forms!Mainform!sform1.sourceobject = "sfrm1"
forms!Mainform!sform2.sourceobject = "sfrm2"
forms!Mainform!sform3.sourceobject = "sfrm3"
forms!Mainform!sform4.sourceobject = "sfrm4"
forms!Mainform!sform5.sourceobject = "sfrm5"
If your subforms names are substantially similar or can be computed or gang set, you can use the sform1, sform2, etc. form modules for all code, computing or gang specifying the specific subform name in once the VBA code.
If your VBA is not-generic, you have to use class modules, because code references are to
forms!MainForm!form1.form.(ctlName)
regardless to the subform actually loaded. And in which event use function calls for event procedures. The sourceobject name is not used for anything else in your VBA.
I use this method extensively and it is fast, even with complex subforms with lots of class module code.
Build a small test example and you'll see how good this method works.