Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UserForm schließen und anderes UserForm öffnen

UserForm schließen und anderes UserForm öffnen
02.08.2008 17:23:00
Meier
HAllo,
wie kann ich mit VBA ein UserForm schließen und ein neues öffnen?
Szenario:
Beim Öffnen von Excel wird ein UserForm (Startformular) geöffnet, das quasi als Hauptfenster dienen soll.
Über mehrere Buttons kann der User auswählen, was er machen möchte. Dann öffnet sich je nach Auswahl ein neues Fenster. Das Startformular soll sich dann ausblenden, das neue Formular einblenden.
Wenn der User jetzt über einen Button des neuen Formulars dieses schließt, soll das Startformular wieder angezeigt, das alte UserForm ausgeblendet werden.
Untenstehend der Code, den ich derzeit verwende.
Problem:
Das alte Formular, in diesem Fall UserForm1 wird nicht richtig geschlossen. Es erscheint hinter dem Startformular UserForm1 und bleibt so stehen.

Private Sub Workbook_Open()
'Startofmular beim Öffnen der Excel-Datei anzeigen
Load UserForm4
UserForm4.Show
End Sub



Private Sub btnEAPL_Click()
'Im Startformular über Button gewünschtes UserForm (UserForm1) öffnen
Unload Me
UserForm1.Show
End Sub



Private Sub btnAbbrechen_Click()
'Formualr schließen und Startformular wieder anzeigen
Unload Me
UserForm4.Show
End Sub


Kann jemand helfen?
Danke, Gruß Jörg

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: UserForm schließen und anderes UserForm öffnen
02.08.2008 19:52:00
Meier
Hi Uwe,
leider nicht so wirklich. Im Beispiel bleibt das Startformular immer stehen, die Forms werden beim Schließen nur versteckt (hide).
Das Startformular soll nicht stehen bleiben, sondern "unsichtbar" oder geschlossen werden, wenn ein anderes Form geöffnet wird.
Die anderen Forms sollen beim Schließen nicht nur versteckt, sondern geschlossen werden, damit sie beim nächsten öffnen auch richtig geladen werden, da beim öffnen der forms auch einige aktionen ausgeführt werden.
Danke schon mal
Gruß Jörg

Anzeige
AW: UserForm schließen und anderes UserForm öffnen
02.08.2008 21:58:21
Uwe
Hallo Jörg,
dann schau mal hier.
www.herber.de/forum/archiv/212to216/t213905.htm
vielleicht hilft das.
Gruß Uwe

AW: UserForm schließen und anderes UserForm öffnen
03.08.2008 11:19:52
Meier
Hi Uwe,
leider hat auch das nicht funktioniert.
Aber ich denke, ich komme dem eigentlichen Problem näher, nur die Lösung liegt mir noch fern.
Ich lasse die Userforms jetzt mit .show vbmodeless öffnen. uns siehe da, das problem ist weg.
Also liegt es wohl irgendwie am modal.
wie kann ich das umschiffen?
kann ich einem geöffneten form vor dem unload das modal entziehen?
BTW: die Daten in den Userforms werden jeweils nur im eigenen Userform benötigt, in ein Tabellenblatt geschrieben und nicht an andere userforms weitergegeben
Danke und schönen so
jörg

Anzeige
AW: UserForm schließen und anderes UserForm öffnen
03.08.2008 12:27:00
Meier
Erledigt, herzlichen Dank für die Hilfe!
Schönen Sonntag
Gruß Jörg

AW: UserForm schließen und anderes UserForm öffnen
03.08.2008 12:28:00
Meier
Erledigt, herzlichen Dankl
Schönen Sonntag!
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

UserForm schließen und anderes UserForm öffnen


Schritt-für-Schritt-Anleitung

Um ein UserForm in Excel VBA zu schließen und ein anderes UserForm zu öffnen, kannst du folgendes Vorgehen verwenden:

  1. Startformular erstellen: Erstelle dein Haupt-UserForm, das beim Öffnen von Excel angezeigt wird. In diesem Beispiel nennen wir es UserForm4.

  2. Code für das Öffnen des Startformulars: Füge den folgenden Code in das ThisWorkbook-Modul ein, um das Startformular beim Öffnen der Arbeitsmappe anzuzeigen:

    Private Sub Workbook_Open()
        Load UserForm4
        UserForm4.Show
    End Sub
  3. Button zum Öffnen eines neuen UserForms: Füge einen Button in UserForm4 hinzu, um ein anderes UserForm (z.B. UserForm1) zu öffnen. Der Code dafür sieht so aus:

    Private Sub btnEAPL_Click()
        Unload Me  ' Schließt das aktuelle UserForm (UserForm4)
        UserForm1.Show  ' Öffnet das neue UserForm (UserForm1)
    End Sub
  4. Button zum Schließen des neuen UserForms: In UserForm1 kannst du einen Button hinzufügen, um das UserForm zu schließen und das Startformular wieder anzuzeigen:

    Private Sub btnAbbrechen_Click()
        Unload Me  ' Schließt das aktuelle UserForm (UserForm1)
        UserForm4.Show  ' Öffnet das Startformular (UserForm4) wieder
    End Sub

Häufige Fehler und Lösungen

  • UserForm bleibt sichtbar: Wenn das UserForm beim Schließen nicht richtig geschlossen wird, stelle sicher, dass du Unload Me verwendest, um das UserForm tatsächlich zu schließen und nicht nur auszublenden.

  • UserForm öffnet im Hintergrund: Falls das neue UserForm hinter dem Startformular erscheint, könnte es hilfreich sein, die Modaleigenschaft zu überprüfen. Überlege, ob du UserForm1.Show vbModeless statt UserForm1.Show verwenden möchtest, um das Problem zu umgehen.


Alternative Methoden

Eine alternative Methode besteht darin, die UserForms nicht nur auszublenden, sondern sie vollständig zu schließen. Du kannst auch den folgenden Code verwenden, um die UserForms bei Bedarf zu laden und zu schließen:

Private Sub btnOpenForm_Click()
    If Not (UserForm1.Visible) Then
        UserForm1.Show vbModeless
    End If
End Sub

Diese Methode stellt sicher, dass das UserForm nur geöffnet wird, wenn es nicht bereits sichtbar ist.


Praktische Beispiele

Hier sind einige Beispiele, wie du UserForms effizient verwalten kannst:

  1. Ein Haupt-UserForm mit mehreren Optionen: Erstelle ein UserForm mit verschiedenen Buttons, die jeweils unterschiedliche UserForms öffnen, z.B.:

    Private Sub btnOption1_Click()
        Unload Me
        UserForm2.Show
    End Sub
    
    Private Sub btnOption2_Click()
        Unload Me
        UserForm3.Show
    End Sub
  2. Datenübergabe zwischen UserForms: Wenn du Daten zwischen UserForms austauschen möchtest, kannst du öffentliche Variablen verwenden. Deklariere sie im Hauptmodul:

    Public UserData As String

Tipps für Profis

  • Verwende vbModeless: Wenn du mehrere UserForms gleichzeitig geöffnet haben möchtest, nutze die vbModeless-Option beim Öffnen.

  • Modularer Code: Halte deinen Code modular, indem du alle UserForm-bezogenen Funktionen in einem eigenen Modul speicherst.

  • Fehlerbehandlung: Implementiere einfache Fehlerbehandlungsroutinen, um unerwartete Probleme beim Öffnen oder Schließen von UserForms zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich ein UserForm schließen und gleichzeitig ein anderes öffnen? Verwende Unload Me für das aktuelle UserForm und UserFormName.Show für das neue UserForm.

2. Was ist der Unterschied zwischen vbModal und vbModeless? vbModal blockiert die Benutzerinteraktion mit anderen Fenstern, während vbModeless es dem Benutzer ermöglicht, zwischen mehreren Fenstern zu navigieren.

3. Warum bleibt das UserForm manchmal im Hintergrund? Das kann passieren, wenn du die Modaleigenschaft nicht korrekt verwendest. Stelle sicher, dass du das UserForm mit vbModeless öffnest, wenn du mehrere gleichzeitig sichtbare UserForms benötigst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige