You can however move your script to one of the other events such as calculate which will trigger when the subform is made visible. You could then wrap your script in an if statement that will onyl run when the subform is visible (subform.presence == "visible").
I tried the wrapper in the initialize but it cuases more issues but can reconfigure the script to the calculate to see if it works out. If I am changing visuals like the x y coordinates, visibility, etc. wil the calculate redraw the form?
The initialise will only trigger when the subform is first created. You can however trigger it to go again by using:
subForm.execInitialize();
I would think that it would work and redraw the form but haven't tried it out. I would also think that it would cause the calculate script to fire AGAIN after it had redrawn the form as that would be part of the layout process.
What I'm saying is that you could leave the script where it is, but start the initialise event again whenever you choose. The initialise will only run once (whenever you open the form at first), unless you tell it to run again.