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

UserForm schließen > verschiedene Methoden

Forumthread: UserForm schließen > verschiedene Methoden

UserForm schließen > verschiedene Methoden
03.02.2009 20:31:23
Lenni
Moin Excellianer!
Ich habe in die Hilfe gekuckt und natürlich auch im Archiv gesucht... ...aber genaue Antworten (...vielleicht auch falsche Fragen gestellt...) leider nicht gefunden.
Wenn meine Beobachtungen hier im Forum stimmen, dann gibt es doch verschiedene Möglichkeiten ein UserForm (UF) zu beenden/schließen?! ...oder?!?
Gibt es irgendwo eine Auflistung dieser Möglichkeiten inklusive Erklärungen dazu?
Hintergrund: Bisher schließe ich meine UFs immer mit "Unload Me" und dieser Code leert auch alle Felder im UF, in die ich Eingaben gemacht habe. Gibt es nicht die Möglichkeit, dass diese Eingaben bestehen bleiben? ...nachdem die eingegebenen Werte vom UF in ein Tabellenblatt geschrieben wurden.
Vielen Dank!
Viele Grüße aus dem hohen Norden!!
Lenni

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm schließen > verschiedene Methoden
03.02.2009 20:37:23
Hajo_Zi
Hallo Lenni,
aber nur in der gleichen Sitzung. Me.Hide

AW: Danke Hajo!
03.02.2009 21:11:00
Lenni
Danke Hajo!
Genau! ...Me.Hide habe ich schon mal irgendwo gelesen... Und das funktioniert auch!!
Gab es nicht auch Methoden, selektiv Daten in Eingabefeldern stehen zu lassen?
Zum Beispiel in der TextBox1 steht ein Datum, welches beim nächsten Öffnen des UF noch bestehen bleiben soll, während z.B. die TextBox2 geleert wird?!
Vielen Dank!
Gruß
Lenni

Anzeige
Textboxinhalte speichern - in Tabelle
03.02.2009 23:20:00
NoNet
Hallo Lenni,
wie Hajo bereits geschrieben hat: Die Inhalte der in die Textboxen eingegebenen Texte/Werte bleibennur währen der aktuelle VBA-Sitzung erhalten. Es besteht keine Möglichkeit, sie dauerhaft in den Textboxen zu speichern (ausser dem "Misbrauch" einer der Eigenschaften der Textboxen !).
Ich empfehle Dir daher, die Werte in einemTabellenblatt zwischenzuspeichern. Hier ein Musterbeispiel für ein UserForm mit 2 Textboxen, 1 Checkbox und 1 Button zum Schliessen des UF :
Private Sub UserForm_Activate()
    'Werte bei Aktivierung des UserForms aus Blatt "Sicherung" einlesen :
    With Sheets("Sicherung")
        TextBox1.Value = .[A1]
        TextBox2.Value = .[A2]
        CheckBox1.Value = .[A3]
    End With
End Sub
Private Sub CommandButton1_Click()
    'Wenn UserForm nur ausgeblendet wird : Werte speichern
    UF_Werte_Speichern
    Me.Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    'Wenn UserForm per X oder "Unload Me" geschlossen wird : Werte speichern
    UF_Werte_Speichern
End Sub
Sub UF_Werte_Speichern()
    With Sheets("Sicherung") 'Werte in Blatt "Sicherung" speichern :
        .[A1] = TextBox1.Value
        .[A2] = TextBox2.Value
        .[A3] = CheckBox1.Value
    End With
End Sub
Gruß, NoNet
AW: Textboxinhalte speichern - in Tabelle
Lenni

Moin NoNet!
....Danke!! Ich habe gerade einen Moment Zeit, mir Deinen Vorschlag anzusehen!
Ich bin aber erst am späten Nachmittag wieder zu Hause und kann dann mal genauer schauen!!!
Ich melde mich dann wieder!!
Gruß
Lenni
AW: Textboxinhalte speichern > Stwrt.: "Mißbrauch"
Lenni

Hallo nochmal NoNet!
Nun, endlich wieder zu Hause, konnte ich mir Deinen Vorschlag genauer betrachten.
Also den Gedanken für das "Auslagern" und "Wiedereinlesen" von Daten in UserForm-Elementen via einem Extra-Tabellenblatt hatte ich auch schon. Ich dachte nur bzw. habe evtl. mal irgendwelche Forumsbeiträge nicht richtig gelesen, es gebe noch einen Weg via VBA ohne "Zwischenspeicher Tabellenblatt".
Das Du mir gleich einen Code lieferst, der so etwas realisiert, finde ich  Klasse!!   Danke!!
Du hattest noch folgendes geschrieben: ...ausser dem "Misbrauch" einer der Eigenschaften der Textboxen !
Ich meine - so aus dem Bauch heraus -, das müßte die Value-Eigenschaft sein... Oder?! Und ganz ehrlich: Ich hatte auch schon in diese Richtung gedacht und schon mal mit einer kleinen Probedatei angefangen "zu experimentieren".
https://www.herber.de/bbs/user/59091.xls
Weißt Du denn, wie dieser "Mißbrauch" in VBA realisiert wird? Wenn zum Beispiel in einer CheckBox1 der Haken gesetzt wird, dann bleibt der zu letzt eingetragene Wert in der TextBox1 fest und (!) auch der Haken der Checkbox.
Erst wenn der Haken bei weiteren UserForm-Aufrufen aus der CheckBox1 entfernt wird, dann wird alles wieder "neutralisiert". Vielen Dank!
Gruß
Lenni

Anzeige
AW: Textboxinhalte speichern - in Tabelle
04.02.2009 10:31:00
Lenni
Moin NoNet!
....Danke!! Ich habe gerade einen Moment Zeit, mir Deinen Vorschlag anzusehen!
Ich bin aber erst am späten Nachmittag wieder zu Hause und kann dann mal genauer schauen!!!
Ich melde mich dann wieder!!
Gruß
Lenni
AW: Textboxinhalte speichern > Stwrt.: "Mißbrauch"
04.02.2009 16:22:07
Lenni
Hallo nochmal NoNet!
Nun, endlich wieder zu Hause, konnte ich mir Deinen Vorschlag genauer betrachten.
Also den Gedanken für das "Auslagern" und "Wiedereinlesen" von Daten in UserForm-Elementen via einem Extra-Tabellenblatt hatte ich auch schon. Ich dachte nur bzw. habe evtl. mal irgendwelche Forumsbeiträge nicht richtig gelesen, es gebe noch einen Weg via VBA ohne "Zwischenspeicher Tabellenblatt".
Das Du mir gleich einen Code lieferst, der so etwas realisiert, finde ich  Klasse!!   Danke!!
Du hattest noch folgendes geschrieben: ...ausser dem "Misbrauch" einer der Eigenschaften der Textboxen !
Ich meine - so aus dem Bauch heraus -, das müßte die Value-Eigenschaft sein... Oder?! Und ganz ehrlich: Ich hatte auch schon in diese Richtung gedacht und schon mal mit einer kleinen Probedatei angefangen "zu experimentieren".
https://www.herber.de/bbs/user/59091.xls
Weißt Du denn, wie dieser "Mißbrauch" in VBA realisiert wird? Wenn zum Beispiel in einer CheckBox1 der Haken gesetzt wird, dann bleibt der zu letzt eingetragene Wert in der TextBox1 fest und (!) auch der Haken der Checkbox.
Erst wenn der Haken bei weiteren UserForm-Aufrufen aus der CheckBox1 entfernt wird, dann wird alles wieder "neutralisiert". Vielen Dank!
Gruß
Lenni

Anzeige
;
Anzeige

Infobox / Tutorial

UserForm schließen: Verschiedene Methoden in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein UserForm in Excel VBA zu schließen, gibt es verschiedene Methoden. Hier sind die gängigsten:

  1. Mit Unload Me: Diese Methode schließt das UserForm und entfernt alle Eingaben. Sie wird häufig verwendet, wenn die Daten nicht mehr benötigt werden.

    Unload Me
  2. Mit Me.Hide: Diese Methode blendet das UserForm nur aus, ohne die Werte zu löschen. Die Eingaben bleiben somit erhalten. Ideal, wenn Du das UserForm später wieder anzeigen möchtest.

    Me.Hide
  3. Mit Private Sub UserForm_QueryClose: Diese Methode wird aufgerufen, wenn das UserForm geschlossen wird. Hier kannst Du entscheiden, ob Du Werte speichern möchtest, bevor das UserForm geschlossen wird.

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
       If CloseMode = vbFormControl Then
           ' Hier Werte speichern
           ' Beispiel: UF_Werte_Speichern
       End If
    End Sub

Häufige Fehler und Lösungen

  • Problem: Eingaben im UserForm gehen beim Schließen verloren.

    • Lösung: Verwende Me.Hide anstelle von Unload Me, um die Eingaben zu behalten.
  • Problem: UserForm reagiert nicht auf Me.Hide.

    • Lösung: Stelle sicher, dass Du keinen Code im UserForm_QueryClose hast, der das Schließen des UserForms verhindert.

Alternative Methoden

Wenn Du die Daten in einem Tabellenblatt speichern möchtest, bevor Du das UserForm schließt, kannst Du folgenden Code verwenden:

Private Sub CommandButton1_Click()
    ' Werte speichern
    Sheets("Sicherung").Range("A1").Value = TextBox1.Value
    Sheets("Sicherung").Range("A2").Value = TextBox2.Value
    ' UserForm ausblenden
    Me.Hide
End Sub

Diese Methode verwendet die CommandButton1_Click-Ereignisprozedur, um die Werte zu speichern und das UserForm zu schließen.


Praktische Beispiele

Hier ist ein einfaches Beispiel für ein UserForm mit zwei Textboxen und einem Button:

Private Sub UserForm_Activate()
    ' Werte bei Aktivierung des UserForms aus Blatt "Sicherung" einlesen
    With Sheets("Sicherung")
        TextBox1.Value = .Range("A1").Value
        TextBox2.Value = .Range("A2").Value
    End With
End Sub

Private Sub CommandButton1_Click()
    ' Werte speichern und UserForm schließen
    Sheets("Sicherung").Range("A1").Value = TextBox1.Value
    Sheets("Sicherung").Range("A2").Value = TextBox2.Value
    Me.Hide
End Sub

Tipps für Profis

  • Daten zwischen UserForms speichern: Du kannst Public Variablen verwenden, um Daten zwischen verschiedenen UserForms zu teilen.
  • Benutzerdefinierte Schließen-Methoden: Erstelle Deine eigenen Funktionen, um das Schließen des UserForms zu steuern, z.B. durch das Speichern von Werten in verschiedenen Tabellenblättern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Eingaben bei Unload Me nicht verloren gehen? Um die Eingaben nicht zu verlieren, solltest Du die Methode Me.Hide verwenden oder vorher die Werte in einem Tabellenblatt speichern.

2. Gibt es eine Möglichkeit, die Eingaben dauerhaft zu speichern? Ja, Du kannst die Werte der Textboxen in einem Tabellenblatt speichern, wie im Abschnitt "Praktische Beispiele" beschrieben.

3. Was ist der Unterschied zwischen Me.Hide und Unload Me? Me.Hide blendet das UserForm nur aus und behält die Eingaben, während Unload Me das UserForm vollständig schließt und alle Eingaben löscht.

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