AW: unload me, werd noch wahnsinnig
13.02.2011 16:17:54
dan
Hallo Stev,
das Problem liegt in der Methode Show().
Laut Help:
Show method displays a UserForm object. When a UserForm is modal, the user must respond before using any other part of the application. No subsequent code is executed until the UserForm is hidden or unloaded.
Also wenn man UserForm.Show() ruft, wird kein nachfolgender Code executed, bis man UserForm.Hide() oder Unload(UserForm) ruft.
Das heisst:
hauptuserform.show
... und der Code hier wird nich weiter luafen, wie der Nepumuk schreibt... bis man Hide oder Unload ruft, was man aber nicht tut. Also die Prozedure die hauptuserform.show gerufen hat endet nicht.
Ich wuerde z.B. so etwas vorschlagen:
' Parent UserForm
Option Explicit
Private frmChild As childUserForm
Private Sub ShowChildUserFormButton_Click()
' hier beginnt das Leben des Child-UserForms
Set frmChild = New childUserForm
' man postiert den 'Child' genau ueber dem 'Parent'
frmChild.StartUpPosition = Me.StartUpPosition
frmChild.Top = Me.Top
frmChild.Left = Me.Left
frmChild.Height = Me.Height
frmChild.Width = Me.Width
VBA.Global.Load frmChild ' Loads an object but doesn't show it.
frmChild.Show vbModal ' Displays a UserForm object
' Hier wartet man, bis der Benutzer den Child-UserForm schliesst...
' und wenn der Child-UserForm geschlossen worden ist,
' landen wir hier wieder und beseitigen den UserForm aus dem Speicher, also hier endet das _
Leben des UserForms
VBA.Global.Unload frmChild
End Sub
Private Sub UserForm_Initialize()
Me.StartUpPosition = 0 ' Manual
Me.Top = 150
Me.Left = 150
Me.Height = 250
Me.Width = 250
End Sub
Gruss dan, cz.