Anzeige
Archiv - Navigation
1200to1204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

unload me, werd noch wahnsinnig

unload me, werd noch wahnsinnig
stev
folgendes problem:
hauptuserform:
frmhauptuserform.hide
frmuserform1.show
userform1(query_close)
unload userform1
hauptuserform.show
selber code im ende_knopf
problem:
funktioniert genau einmal, beim 2. mal wird userform1 nicht mehr entladen
jetzt hab ich nur experimentiert mit unload me statt unload userform1 nun wird userform1
überhaupt nicht mehr entladen
ich fummle nun schon seit 3 stunden mit 2 zeilen code, und drehe bald durch...
selbige prozedur wiederholt sich dann, wenn von userform1 aus userform2 geladen wird
und so weiter auf anderen "zweigen".
noch etwas ist mir aufgefallen, wenn ich mein programm starte wird machmal nicht die
mappe geöffnet sondern nur excel ohne alles.
ich kann nicht mehr vielleicht weis einer was?!
gruß

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: unload me, werd noch wahnsinnig
12.02.2011 23:18:22
stev
hi,
dachte ich auch schon dran, aber wie soll ichs rausfinden? msgbox ins initialize klappt.
msgbox ins terminiert kommt nie. mit F8 wird der befehl korrekt abgearbeitet aber uform bleibt offen,
hauptuform wird einfach drübergeblendet...
ich nix verstehen das
AW: unload me, werd noch wahnsinnig
13.02.2011 00:01:04
stev
achso...
mit me.hide oder frmxxx.hide gehts
dieser code im query_close funktioniert GENAU ein mal.
dann passiert nix mehr, wenn ich aufs kreuz klicke.
ich will aber nicht, das wenn sich einer durch alle ebenen klickt 15 oder 20 userforms geöffnet sind.
Anzeige
AW: unload me, werd noch wahnsinnig
13.02.2011 09:45:10
Nepumuk
Hallo,
ganz einfach, deine QueryClose-Events werden nie richtig beendet.
Userform1 öffnet Userform2, das QueryClose-Event kann nicht auf End <pre>Sub laufen da er durch den Aufruf von Userform2 blockiert wird. Genauso ist es dann von Userform2 zurück auf Userform1, auch hier kann das QueryClose-Event nicht abgeschlossen werden. Nachdem du einmal hin- und hergewechselt bist, stehen in beiden Userforms die Pointer des Codes vor dem End Sub</pre>. Die Events sind also noch aktiv und können daher nicht mehr aufgerufen werden.
Jetzt verstanden warum es genau einmal funktioniert?
Mit dem Event und Modalen Userforms kommst du da also nicht weiter. Schalte die X'e ab und lass die Userforms nur noch über den Button oder ESC beenden. Was besseres fällt mir dazu auch nicht ein.
Gruß
Nepumuk
P.S. Die pre-Tags im Text macht die Forensoftware rein, trotz Tilde f Tilde. Also einfach ignorieren.
Anzeige
vielleicht mit Application.OnTime
13.02.2011 12:17:39
Tino
Hallo,
ich könnte mir denken dies mit einem Timer zu lösen und die StartForm verzögert aufzurufen.
Gruß Tino
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.
Anzeige

19 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige