Es más sencillo de lo que pueda parecer.
1 ) Añade un módulo e incluye en él una rutina 'main'
2 ) Ahora ve a las propiedades del proyecto e indícale que la carga inicial se hace desde 'Main'.
3 ) Ya carga el proyecto desde main, esto sirve para que llames al formulario es decir tu 1ª instrucción debería ser form1.show (ojo no hagas un form1.showdialog)
4 ) En la carga de formulario no debería haber código, o al menos no código pesado, para que arranque lo rápido que tu quieras.
5 ) Al término de carga de tu formulario, se regresa al main, ahora procesa todo eso que deseas, es decir debes trasladar todo eso que haces en el formulario principal en el evento load a una rutina del módulo main o del propio formulario... supongamos que hasta ahora lo tienes en el load: tomas ese código y lo metes en una rutina de nombre por ejemplo :
public function carga_Previa() as boolean
' el código que quieres ejecutar...
end function
Entonces en main lo que haces es una llamada a esa rutina, pero justo después de que el formulario se ha cargado completamente y está visible.
Así te quedaría al final algo como:
public sub main
form1.show
call form1.carga_Previa
end sub
No se te ocurra poner en el main debajo de la instrucción de llamada a la funcion carga_Previa la instrucción end, porque el programa se cerraría, en 'end' sólo debe ponerse cuando se arranca desde 'main' pero el formulario es modal es decir se lo llamó como: 'form1.showdialog', que al caso no nos vales porque tenemos que ejecutar una rutina justo tras ser cargado el formulario. Aunque siempre podríamos hacer esto otro:
public sub main
form1.show
call form1.carga_Previa
form1.showdialog
end
end sub
Pero lo veo redundante....
Si necesitas algún acondicionamiento previo a la llamada del formulario, posiblemente necesites 'traspasar' declaraciones de variables desde el formulario al módulo, para que estas estén disponibles antes de que se cargue el formulario.