When you open a form that contains a subform, the open event occurs first for the subform and then for the parent. As a result, during the open event of the subform the parent doesn't really exist yet, and references to it--as you've seen--will fail.
There are a few work-arounds. The thing I most commonly do is load the subform programmatically, so first of all, delete it's name from the subform control's SourceObject property, which is on the data tab of the parent form's subform control in design view.
Then, at some point during open or load on the parent form, explicitly set the SourceObject property of the subform control to the name of the subform you want to load. Code will look like . . . .
Private Sub Form_Open(Cancel As Integer)
Me.MySubformControlName.SourceObject = "NameOfSubform"
This loads the subform into the subform control in the parent, and then, during the open event of the subform, that parent will be present.