Discussion:
Schließen eines Userform durch Makro
(zu alt für eine Antwort)
Anh Tuan Hoang
2004-01-31 10:02:24 UTC
Permalink
Hallo,

kann mir jemand sagen, wie ich ein Userform (z.B. Userform1) im gleichen
Makro, in dem es mit "Userform1.Show" gezeigt wurde, wieder schließen kann?
"Userform1.Hide" hat bei mir nicht funktioniert.

Danke im Voraus und Gruß
Tuan
Markus Fiedler
2004-01-31 11:08:57 UTC
Permalink
versuchs mal mit ->
Unload Me
gruß
Markus
Post by Anh Tuan Hoang
Hallo,
kann mir jemand sagen, wie ich ein Userform (z.B. Userform1) im gleichen
Makro, in dem es mit "Userform1.Show" gezeigt wurde, wieder schließen kann?
"Userform1.Hide" hat bei mir nicht funktioniert.
Danke im Voraus und Gruß
Tuan
Anh Tuan Hoang
2004-01-31 17:58:41 UTC
Permalink
Post by Markus Fiedler
versuchs mal mit ->
Unload Me
Funktioniert leider auch nicht.

Gruß
Tuan
Dimo Tabken
2004-01-31 18:18:13 UTC
Permalink
Post by Anh Tuan Hoang
Post by Markus Fiedler
versuchs mal mit ->
Unload Me
Funktioniert leider auch nicht.
Hi Tuan,

unload me

funktioniert natürlich nur, wenn Du's auch tatsächlich aus dem Code des
UserForms aus aufrufst, das geschlossen werden soll...
Ich kann mir nicht vorstellen, dass das nicht gehen soll.

Ansonsten eben unload UserFormxxx

sollte auch funktionieren
--
Gruß
Dimo
Anh Tuan Hoang
2004-01-31 18:53:27 UTC
Permalink
Post by Dimo Tabken
Hi Tuan,
unload me
funktioniert natürlich nur, wenn Du's auch tatsächlich aus dem Code des
UserForms aus aufrufst, das geschlossen werden soll...
Ich kann mir nicht vorstellen, dass das nicht gehen soll.
Ansonsten eben unload UserFormxxx
sollte auch funktionieren
Nein, leider nicht. Also: Ich möchte beim Öffnen einer Excel-Datei ein
Userform zeigen, das nach z.B. 5 Sekunden wieder verschwindet. Habe
Folgendes gemacht:

(In "DieseArbeitsMappe")
Sub Workbook_Open()
UserForm1.Show
End Sub

(Im Code-Fenster des Userforms)
Private Sub UserForm_Initialize()
Me.Show
Application.Wait (Now + TimeValue("0:00:05"))
Unload Me
End Sub

Wenn ich "Me.Show" nicht drin habe, wird das Userform komischerweise nicht
gezeigt! :-( Aber jedenfalls wird das Userform nicht geschlossen und es
kommt eine Fehlermeldung.

Weißt du warum?
Gruß
Tuan
Dimo Tabken
2004-01-31 19:03:26 UTC
Permalink
Post by Anh Tuan Hoang
Aber jedenfalls wird das Userform nicht geschlossen und es
kommt eine Fehlermeldung.
Weißt du warum?
noch nicht, das finden wir aber noch 'raus ;-)
Schreib' bitte noch, welche fehlermeldung Du bekommst. Das wäre ganz
interessant...
--
Gruß
Dimo
Dimo Tabken
2004-01-31 19:21:38 UTC
Permalink
Soo, nu aber...
Post by Dimo Tabken
noch nicht, das finden wir aber noch 'raus ;-)
Schreib' bitte noch, welche fehlermeldung Du bekommst. Das wäre ganz
interessant...
Wenn Du im Code des Userforms statt userform_initialize() die Eigenschaft
userform_activate() verwendest, dann geht's

Sub workbook_open()
frmTest.Show

End Sub


Private Sub UserForm_activate()

Application.Wait (Now + TimeValue("0:00:05"))

Unload Me
End Sub

Viel Spaß...
--
Gruß
Dimo
Melanie Breden
2004-01-31 19:12:56 UTC
Permalink
Hallo Tuan,
Post by Anh Tuan Hoang
kann mir jemand sagen, wie ich ein Userform (z.B. Userform1) im gleichen
Makro, in dem es mit "Userform1.Show" gezeigt wurde, wieder schließen kann?
"Userform1.Hide" hat bei mir nicht funktioniert.
verwende das Activate-Ereignis der UserForm, dann klappt es:
Private Sub Workbook_Open()
UserForm1.Show
End Sub

Private Sub UserForm_Activate()
Application.Wait (Now + TimeValue("0:00:05"))
Unload Me
End Sub
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Anh Tuan Hoang
2004-01-31 19:44:08 UTC
Permalink
Post by Melanie Breden
Post by Anh Tuan Hoang
kann mir jemand sagen, wie ich ein Userform (z.B. Userform1) im gleichen
Makro, in dem es mit "Userform1.Show" gezeigt wurde, wieder schließen kann?
"Userform1.Hide" hat bei mir nicht funktioniert.
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub UserForm_Activate()
Application.Wait (Now + TimeValue("0:00:05"))
Unload Me
End Sub
Vieeelen Dank. Es funktioniert nun.

Gruß
Tuan
Anh Tuan Hoang
2004-01-31 19:45:54 UTC
Permalink
Post by Melanie Breden
Hallo Tuan,
Post by Anh Tuan Hoang
kann mir jemand sagen, wie ich ein Userform (z.B. Userform1) im gleichen
Makro, in dem es mit "Userform1.Show" gezeigt wurde, wieder schließen kann?
"Userform1.Hide" hat bei mir nicht funktioniert.
[...]
Und wie geht das "von Außen", d.h. wie kann ich ein Userform schließen, oder
dass ich den Schließ-Befehl in den Userform-Code integrieren muss? Ich
möchte das gerne von einer beliebigen Sub aus tun.

Gruß
Tuan
Melanie Breden
2004-01-31 20:28:36 UTC
Permalink
Hallo Tuan,
Post by Anh Tuan Hoang
Post by Anh Tuan Hoang
kann mir jemand sagen, wie ich ein Userform (z.B. Userform1) im gleichen
Makro, in dem es mit "Userform1.Show" gezeigt wurde, wieder schließen
kann?
Post by Anh Tuan Hoang
"Userform1.Hide" hat bei mir nicht funktioniert.
[...]
Und wie geht das "von Außen", d.h. wie kann ich ein Userform schließen, oder
dass ich den Schließ-Befehl in den Userform-Code integrieren muss? Ich
möchte das gerne von einer beliebigen Sub aus tun.
speicher folgende Prozeduren in einem Standarmodul.

Rufe 'ShowFormular' auf, nach 5 Sek. wird die UserForm wieder geschlossen:

Sub ShowFormular()
Application.OnTime Now + TimeValue("00:00:05"), "UnloadFormular"
UserForm1.Show
End Sub

Sub UnloadFormular()
Unload UserForm1
End Sub
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Anh Tuan Hoang
2004-02-01 08:50:54 UTC
Permalink
Hallo Melanie,
Post by Melanie Breden
Post by Anh Tuan Hoang
dass ich den Schließ-Befehl in den Userform-Code integrieren muss? Ich
möchte das gerne von einer beliebigen Sub aus tun.
speicher folgende Prozeduren in einem Standarmodul.
Sub ShowFormular()
Application.OnTime Now + TimeValue("00:00:05"), "UnloadFormular"
UserForm1.Show
End Sub
Sub UnloadFormular()
Unload UserForm1
End Sub
(Fast) genau so habe ich es auch gemacht. Der entscheidende Unterschied war,
dass ich "Userform1.Show" VOR "Application.Ontime ..." gestellt habe! :-((
So wurde "Application.Ontime ..." gar nicht erst gerufen.

Jetzt aber eine andere Frage: Ich möchte eigentlich anstelle von
"Application.Ontime ..." eine Reihe von Initialisierungsroutinen ablaufen
lassen und danach das Userform schließen. Wie geht das dann?
"UnloadFormular" ist diesmal ja nicht mehr zeitgesteuert, und wenn ich
Userform1.Show am Anfang aufrufe, wartet Excel ja auf das Schließen des
Userforms, bevor es mit dem Programm weitergeht. Du hattest die Möglichkeit
mit Userform_Activate() schon genannt, aber ich möchte das Schließen des
Userform gern "von außen" tun. Vielleicht geht das doch nicht?

Gruß
Tuan
Melanie Breden
2004-02-01 11:14:08 UTC
Permalink
Hallo Tuan,
Post by Anh Tuan Hoang
Jetzt aber eine andere Frage: Ich möchte eigentlich anstelle von
"Application.Ontime ..." eine Reihe von Initialisierungsroutinen ablaufen
lassen und danach das Userform schließen. Wie geht das dann?
"UnloadFormular" ist diesmal ja nicht mehr zeitgesteuert, und wenn ich
Userform1.Show am Anfang aufrufe, wartet Excel ja auf das Schließen des
Userforms, bevor es mit dem Programm weitergeht. Du hattest die Möglichkeit
mit Userform_Activate() schon genannt, aber ich möchte das Schließen des
Userform gern "von außen" tun. Vielleicht geht das doch nicht?
leider verstehe ich deine Frage nicht :-(
Kannst du genauer beschreiben (mit Beispielen) was du ereichen willst.

Hast du bereits einen Ansatz?
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Anh Tuan Hoang
2004-02-01 11:35:35 UTC
Permalink
Post by Melanie Breden
Hallo Tuan,
Post by Anh Tuan Hoang
Jetzt aber eine andere Frage: Ich möchte eigentlich anstelle von
"Application.Ontime ..." eine Reihe von Initialisierungsroutinen ablaufen
lassen und danach das Userform schließen. Wie geht das dann?
"UnloadFormular" ist diesmal ja nicht mehr zeitgesteuert, und wenn ich
Userform1.Show am Anfang aufrufe, wartet Excel ja auf das Schließen des
Userforms, bevor es mit dem Programm weitergeht. Du hattest die Möglichkeit
mit Userform_Activate() schon genannt, aber ich möchte das Schließen des
Userform gern "von außen" tun. Vielleicht geht das doch nicht?
leider verstehe ich deine Frage nicht :-(
Kannst du genauer beschreiben (mit Beispielen) was du ereichen willst.
Hast du bereits einen Ansatz?
Also: Was ich erreichen möchte, ist, beim Öffnen einer Excel-Datei zuerst
ein Userform (als Startbild) zu zeigen, anschließend eine Reihe von
Rechenroutinen durchzuführen und DANN das Startbild (also das Userform)
wieder zu schließen. So würde ich in der Sub "Workbook_Open()" zuerst
"Userform1.Show" aufrufen, danach die ganzen Rechenroutinen und DANN
"Userform1.Hide" aufrufen. Aber das geht ja nicht, da nach "Userform1.Show"
das Programm nicht weiterläuft, sondern wartet, bis man das Userform mit
einem Mausklick schließt. D.h. ich brauche irgendwie einen Mechanismus, mit
dem die Rechenroutinen trotz gezeigten Userforms gestartet werden können und
danach das Userform geschlossen werden kann.

Mittlerweile habe ich eingesehen, dass das wahrscheinlich nur geht, wenn man
die Rechenroutinen in "Userform_Activate()" packt. Oder gibt es auch einen
anderen Weg?

GRuß
Tuan
Melanie Breden
2004-02-01 12:48:44 UTC
Permalink
Hallo Tuan,
Post by Anh Tuan Hoang
Post by Melanie Breden
Hast du bereits einen Ansatz?
Also: Was ich erreichen möchte, ist, beim Öffnen einer Excel-Datei zuerst
ein Userform (als Startbild) zu zeigen, anschließend eine Reihe von
Rechenroutinen durchzuführen und DANN das Startbild (also das Userform)
wieder zu schließen. So würde ich in der Sub "Workbook_Open()" zuerst
"Userform1.Show" aufrufen, danach die ganzen Rechenroutinen und DANN
"Userform1.Hide" aufrufen. Aber das geht ja nicht, da nach "Userform1.Show"
das Programm nicht weiterläuft, sondern wartet, bis man das Userform mit
einem Mausklick schließt. D.h. ich brauche irgendwie einen Mechanismus, mit
dem die Rechenroutinen trotz gezeigten Userforms gestartet werden können und
danach das Userform geschlossen werden kann.
Mittlerweile habe ich eingesehen, dass das wahrscheinlich nur geht, wenn man
die Rechenroutinen in "Userform_Activate()" packt. Oder gibt es auch einen
anderen Weg?
ich würde ein Label aus der Steuerelemnt-Toolbox auf dem
Tabellenblatt plazieren.
Bei Dateiöffnung zeigst du es mit der Visible-Eigenschaft an,
durchläufst deine anderen Prozeduren und blendest das Label
anschließend wieder aus.
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Anh Tuan Hoang
2004-02-01 14:07:35 UTC
Permalink
Post by Melanie Breden
Hallo Tuan,
danach das Userform geschlossen werden kann.
Post by Anh Tuan Hoang
Mittlerweile habe ich eingesehen, dass das wahrscheinlich nur geht, wenn man
die Rechenroutinen in "Userform_Activate()" packt. Oder gibt es auch einen
anderen Weg?
ich würde ein Label aus der Steuerelemnt-Toolbox auf dem
Tabellenblatt plazieren.
Bei Dateiöffnung zeigst du es mit der Visible-Eigenschaft an,
durchläufst deine anderen Prozeduren und blendest das Label
anschließend wieder aus.
So kann man es natürlich auch machen! :-) Danke.

Gruß
Tuan
Melanie Breden
2004-02-01 14:51:15 UTC
Permalink
Hallo Tuan,
Post by Anh Tuan Hoang
Post by Melanie Breden
ich würde ein Label aus der Steuerelemnt-Toolbox auf dem
Tabellenblatt plazieren.
Bei Dateiöffnung zeigst du es mit der Visible-Eigenschaft an,
durchläufst deine anderen Prozeduren und blendest das Label
anschließend wieder aus.
So kann man es natürlich auch machen! :-) Danke.
warum kompliziert, wenn es auch einfach geht ;-)
Freut mich wenn ich dir helfen konnte.
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Anh Tuan Hoang
2004-02-01 17:52:45 UTC
Permalink
Post by Melanie Breden
Hallo Tuan,
Post by Anh Tuan Hoang
So kann man es natürlich auch machen! :-) Danke.
warum kompliziert, wenn es auch einfach geht ;-)
Freut mich wenn ich dir helfen konnte.
Wetten, dass du Profiprogrammiererin bist? :-))

Gruß
Tuan
Dimo Tabken
2004-02-02 07:53:20 UTC
Permalink
Post by Anh Tuan Hoang
Wetten, dass du Profiprogrammiererin bist? :-))
Schau mal in Melanies Signatur ;-)
ich würde sagen, die Wette gewinnst Du...
--
Gruß
Dimo
Loading...