Ich rufe aus einem Dialogfenster (UserForm) über eine Schaltfläche ein
anderes Dialogfenster auf. Das Problem ist, daß das Ereignis INITIALIZE
[Privat Sub UserForm_Initialize()] nicht erkannt wird und in meinem Fall
eine Variable nicht erneut eingelesen wird.
Private Sub CommandButton1_Click()
UserForm1.Hide
UserForm2.Show
End Sub
Beim erstmaligen Aufruf funktioniert es, aber wenn ich ein vorher
initialisiertes Dialogfenster nochmals aufrufe nicht mehr. Meine
Vermutung ist, daß durch HIDE das Fenster ausgeblendet aber nicht
geschlossen wird und bei SHOW nur wieder eingeblendet wird, aber nicht
erneut initialisiert wird.
Ich habe es schon mit LOAD, UNLOAD, REPAINT, ACTIVATE versucht, war aber
leider nicht erfolgreich. Wer hat einen Lösungsansatz für mich?
Gruß
Nils Heiliger
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Donauradweg 1998: In 6 1/2 Tagen mit dem Fahrrad
von der Quelle bis nach Wien...
http://home.t-online.de/home/nils.heiliger/default.htm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Ich rufe aus einem Dialogfenster (UserForm) über eine Schaltfläche ein
> anderes Dialogfenster auf. Das Problem ist, daß das Ereignis
INITIALIZE
> [Privat Sub UserForm_Initialize()] nicht erkannt wird und in meinem
Fall
> eine Variable nicht erneut eingelesen wird.
>
> Private Sub CommandButton1_Click()
> UserForm1.Hide
> UserForm2.Show
> End Sub
>
> Beim erstmaligen Aufruf funktioniert es, aber wenn ich ein vorher
> initialisiertes Dialogfenster nochmals aufrufe nicht mehr. Meine
> Vermutung ist, daß durch HIDE das Fenster ausgeblendet aber nicht
> geschlossen wird und bei SHOW nur wieder eingeblendet wird, aber nicht
> erneut initialisiert wird.
Deine Vermutung ist richtig, das initialize Ereignis tritt nicht ein,
wenn Du die Userform mit Hide ausgeblendet hast. Folgender Code zur
Demonstration:
Zwei Userforms, je mit einem Label und einem CommandButton:
Userform1:
Private Sub CommandButton1_Click()
Me.Hide
UserForm2.Show
End Sub
Private Sub UserForm_Initialize()
Label1.Caption = Now()
End Sub
Userform2:
Private Sub CommandButton1_Click()
Unload Me
UserForm1.Show
End Sub
Private Sub UserForm_Initialize()
Label1.Caption = Now()
End Sub
Die Zeit im Userform1 wird nur einmal aktualisiert, im Userform2 bei
jedem Aufruf.
HTH,
Andreas
vielen Dank für Deine Bestätigung meines Problems...
Die Aufgabenstellung ist das Aktualisieren von UserForm1 in Deinem gut
gewählten Beispiel. Hat jemand eine Lösung?
Gruß
Nils Heiliger
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Donauradweg 1998: In 6 1/2 Tagen mit dem Fahrrad
von der Quelle bis nach Wien...
http://home.t-online.de/home/nils.heiliger/default.htm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Andreas Steffens schrieb:
> vielen Dank für Deine Bestätigung meines Problems...
> Die Aufgabenstellung ist das Aktualisieren von UserForm1 in Deinem gut
> gewählten Beispiel. Hat jemand eine Lösung?
ich dachte, Dir wäre die Lösung des Problems schon aus meinem Beispiel
klar geworden. Du mußt die Userform mit
unload me
schließen, bevor Du die zweite Userform darstellst, also der Code der
ersten Userform ist dann
Private Sub CommandButton1_Click()
Unload Me
UserForm2.Show
End Sub
Dann wird beim nächsten Userform1.Show auch wieder das
initialize-Ereignis ausgelöst.
HTH,
Andreas
Du hast recht, es funktioniert - vielen, vielen Dank!
Aber warum heißt das Objekt me und nicht UserForm1? Die
Online-Dokumentation gibt nicht her... - kannst Du zaubern?
Gruß
Nils Heiliger
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Donauradweg 1998: In 6 1/2 Tagen mit dem Fahrrad
von der Quelle bis nach Wien...
http://home.t-online.de/home/nils.heiliger/default.htm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Andreas Steffens schrieb:
> Du hast recht, es funktioniert - vielen, vielen Dank!
> Aber warum heißt das Objekt me und nicht UserForm1? Die
> Online-Dokumentation gibt nicht her... - kannst Du zaubern?
Nö, ist doch in der Online-Hilfe dokumentiert (Visual-Basic Referenz).
Auch wenn der Hilfetext nicht gerade leichte Kost ist.
In Klassenmodulen steht Me immer für die zugehörige Instanz der Klasse.
Damit kannst Du leicht eine Referenz an andere Prozeduren weitergeben.
Siehe Online-Hilfe
HTH,
Andreas