i'm going to drop out as I can see no way of helping you.
We are 24 posts in for something which is really very simple. I don't know why you are struggling. you have not been consistent in what you require and you have been given multiple solutions and sources of information.
The fact that you don't see sourceobject in intellisense doesn't mean much. Plenty of properties are not revealed there, but can be found in online documentation or the object browser. If they exist and have been properly invoked they will work regardless. If you want the sourceobject property value for "subform2" where you have
The fact that Access names a control the same name as an object that it is bound to is of little consequence here beyond serving only to confuse. If you place that name in the proper part of the syntax, Access will figure out that "subForm1" is the control when it needs to and the fact that the form contained within has the same name it is irrelevant. What matters is that the name you pass to the hierarchy of a reference is valid for that part of the reference. Note that I would not say the same thing for where a field and a control has the same name.
It may very well be that you don't see what you expect in intellisense because what comes before what you're looking for has not been properly constructed.
I disagree with that statement as it relates to this problem. In this case, it means everything. Recordsource and sourceobject are always properly exposed by intellisense.
The absolute only way that sourceobject does not appear in intellisense and recordsource does, is that the OP is not referencing a subform control but is referencing a form object. This has been previously stated correctly in this thread by others.
If a proper reference to a subform control is made then sourceobject will be available and not recordsource.
Me.subformControlName.SourceObject = "NameOfForm"
If a proper reference to a form inside a subform control is made then recordsource will be available and not sourceobject.
Me.SubformControlName.Form.Recordsource = "NameOfTableOrQuery"
Can't disagree with that. My message was poorly written and my last sentence didn't really clarify that point:
It may very well be that you don't see what you expect in intellisense because what comes before what you're looking for has not been properly constructed.
which was supposed to mean the chain of references was not correct, which certainly would be the case if one was attempting to get the source object of something that doesn't have one. I was trying to explain that missing properties in intellisense does not mean they don't exist.