Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
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

mehrere Userformen gleichzeitig schließe

mehrere Userformen gleichzeitig schließe
24.03.2021 16:54:05
Sonja
Hallo,
ich habe eine Datei mit mehreren Tabellenblättern.
Jedes Tabellenblatt hat einen Button zum aktivieren verschiedener UserForms.
Ich habe jetzt eine Userform, die ich in jedem Tabellenblatt verwenden möchte. Das heißt, die Codes beginnen mit: "ActiveSheet.." Das habe ich deshalb gemacht, dass ich nicht für jedes Tabellenblatt einen eigenen Code hinterlegen muss, sondern in jedem Tabellenblatt anwenden kann. Es geht hierbei um die Selektion von Auftragnehmern.
Ich öffne also die erste UserForm, welche sich auf das fixe Tabellenblatt (z.B. Rechnungen) bezieht und wähle dann die nächste UserForm, welche sich auf das jeweilig aktive (flexible) Tabellenblatt bezieht und dort die Auftragnehmer selektieren soll.
Mein Ziel ist, dass beim anklicken des gewünschten Auftragnehmers die Selektion stattfindet (das klappt bereits) und anschließend beide UserForms schließen.
normalerweise:
unload UserForm_Rechnungen
unload UserForm_Auftragnehmer
Da ich den Code aber auch bei anderen Tabellenblättern einsetzen möchte und daher z.B. die UserForm_Nachträge als erstes geöffnet ist, brauche ich einen Code, der generell alle geöffneten Userforms schließt. Unabhängig davon, in welchen Tabellenblatt ich mich befinde.
sowas wie:
unload all UserForms :-)
Ich hoffe, ich hab mich einigermaßen verständlich ausgedrückt.. Hat jemand eine Idee? Ich habe bereits die Beiträge durchforstet, konnte aber nichts passendes finden.
Danke
Sonja

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Userformen gleichzeitig schließe
24.03.2021 17:02:08
Hajo_Zi
Hallo Sonja,
mache die radikalle Methode End
Bild
Homepage

AW: mehrere Userformen gleichzeitig schließe
24.03.2021 17:05:34
Sonja
Oh Mann das ist ja echt peinlich... hmm
Danke Hajo - ich sagte ja, VBA "bescheiden"
Vielen Dank und liebe Grüße an euch fleißige Helfer

AW: mehrere Userformen gleichzeitig schließe
24.03.2021 18:02:20
Nepumuk
Hallo Sonja,
ich würde dir von der brutalo-Methode "End" abraten. Damit werden nämlich alle öffentlichen und statische Variablen sowie Klassen zurückgesetzt. Besser so:
Public Sub AlleSchließen()
    Dim objForm As MSForms.UserForm
    For Each objForm In UserForms
        Call Unload(Object:=objForm)
    Next
End Sub

Gruß
Nepumuk

Anzeige
AW: mehrere Userformen gleichzeitig schließe
25.03.2021 10:42:20
Sonja
Hallo Nepumuk,
jetzt habe ich "End" natürlich schon überall eingepflegt. Du hast recht, ich bin auch nicht glücklich mit dieser Variante. Kann es sein, dass ich deshalb meine ausgeblendeten Zeilen nicht mehr einblenden kann. Ich bin am verzweifeln. Ich habe in den oberen 4 Zeilen meine Auswertungen und die Vorlage für die neuen Einträge. Ich komm da nicht mehr ran.
Ich probier jetzt erst mal deine Variante und hoffe, dass es dann wieder geht.
Gruß
Sonja

AW: mehrere Userformen gleichzeitig schließe
26.03.2021 16:57:12
Piet
Hallo Sonja
vor Jahren wurde ich von mehreren Kollegen im Forum heftigst angeschnautzt, weil ich in einer Beispieldatei "End" benutzte und einigen dadurch Daten verloren gingen. Sollte der Ende Befehl in einem Code mit Application.EventsEnable=False stehen ist das absolut tödlich! Die Events werden dann NIE wieder eingeschaltet!
Teste lieber den Code von Nepumuk, den kannst du auch als Call aus anderen Makros aufrufen. Sonst erstelle dir einen eigenen Code wo du jede userForm namentlich einzeln abschaltest. Das ist besser als End. Ich verwende es NUR zum Testen!! Und nur in einer Datei!!
mfg Piet

Anzeige
AW: mehrere Userformen gleichzeitig schließe
26.03.2021 17:08:06
Piet
Nachtrag
sollten die Events abgeschaltet sein kannst du se so wieder starten. Das passiert mit auch beim programmieren.
In ein Modul kopieren und starten. dann sind die Events wieder aktiv.
mfg Piet
Sub Start_Events()
Application.EnableEvents = True
End Sub

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige