(Vale, Jesús, me merezco un capón por el título, pero no se me ocurre qué poner.)

Cuando se empiezan a manejar cosas complicadas -a saber: formularios que contienen contenedores que contienen formularios que, a su vez contienen otros formularios y cosas así- te encuentras con que gambas, como que "se pierde" a la hora de saber qué es qué. Valga un ejemplo:

Tenemos un formulario que tiene un tabstrip. El tabstrip tiene una pestaña que contiene un formulario. Si queremos cerrar éste último formulario la cadena de referencias sería:

miformulario.mitabstrip[n].children[0].close()

Nosotros "sabemos" que mitabstrip[n].children[0] es un formulario, y que tiene el evento close(), pero la instrucción de arriba nos provoca un error en tiempo de ejecución:

"Unknown event close in class container"

¿Qué hacer? Pues muy ufanos pensamos: "creamos una referencia" y hacemos lo siguiente:
Dim f as form
f=miformulario.mitabstrip[n].children[0]
f.close()

y ¡Oh maravilla, funciona!... o no.
Dependiendo de qué clase referenciemos y de qué método invoquemos puede que nos encontremos con un mensaje que, al llegar a la línea
f=miformulario.mitabstrip[n].children[0]

Se genera en tiempo de ejecución un mensaje que dice algo así como que se esperaba un Form y lo que ha encontrado es una función... o un container o vaya usted a saber qué.
Pero nosotros "sabemos" que es un Form...¿Qué hacemos entonces? Pues le dejamos que el intérprete se las apañe cambiando la línea

por

Entonces funcionará siempre.
La explicación real no la sé. Podría aventurar alguna: que el árbol de referencias en tiempo de compilación no alcanza a tal o cual profundidad, que las instancias que se crean en tiempo de ejecución no son referenciadas igual que las que se generan en tiempo de diseño... etc. etc.
Pero el tema es: No olvidéis los viejos y queridos object. Según gambasdoc son un tipo de referencia más lentos de uso en ejecución, pero parecen ser la única salida para según qué situaciones.

Perdón por el ladrillo.