Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Userform aktualisieren

Userform aktualisieren
27.12.2019 14:34:37
Jubel
Hallo Leute,
ich habe eine Userform mit einer Multipage und zahlreichen Labels, Textboxen etc., auf der auch diverse Buttons sind, mit der man in weitere Userformen abspringen kann. Während diese "Zusatz-Userformen" über die Buttons aufgerufen werden, bleibt die "Haupt-Userform" aber immer geöffnet. Nun ist es aber so, dass Dinge, die man in den "Zusatz-Userformen" auswählt, Einfluss auf die dargestellten Inhalte auf der "Haupt-Userform" haben. Daher würde ich die "Haupt-Userform" gerne immer dann komplett aktualisieren, wenn ich von einer "Zusatz-UserForm" zurückkehre.
Bisher habe ich alle Aktualisierungen der "Haupt-Userform" in einer "Private Sub UserForm_Activate()" zusammengefasst, was aber hier nicht zielführend ist, weil die "Haupt-Userform" dann nur einmal bei der Erstellung mit den korrekten Daten bestückt wird, nicht aber, wenn ich von einer "Zusatz-Userform" zurückkehre.
Könnt ihr mir sagen, was für eine Art von Private Sub ich hier verwenden könnte? Oder ob es einen anderen einfachen Weg gibt, um die Aktualisierung zum gewünschten Zeitpunkt vorzunehmen?
Grüße
JDB
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform aktualisieren
27.12.2019 14:41:07
Hajo_Zi
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
vieleicht doevents?

AW: Userform aktualisieren
27.12.2019 15:17:20
Jubel
Hi Hajo,
ich wollte jetzt nicht die ganze Datei einhängen, da es mehrere tausend Zeilen Code sind. Es ging mir auch eher um eine grundsätzliche Klärung, wie man eine UserForm anders zur Aktualisierung zwingen kann, als sie zu schließen und komplett neu aufzurufen.
Anzeige
AW: Userform aktualisieren
27.12.2019 14:48:29
Nepumuk
Hallo,
benutze zum erstmaligen Initialisieren das UserForm_Initialize - Event. Und zum Aktualisieren der Daten nach dem Schließen der zweiten UserForm das UserForm_Activate - Event.
Gruß
Nepumuk
AW: Userform aktualisieren
27.12.2019 15:15:42
Jubel
Hallo Nepumuk,
das mache ich ja derzeit schon. Also ich nutze derzeit für alle Aktualisierungsbefehle die "Private Sub UserForm_Activate()". Leider bedingt die eben nicht, dass alle Aktualisierungen der Sub (z.B. Bestückung eines Labels mit dem Inhalt einer Zelle) noch einmal durchlaufen werden, wenn man von einer anderen Userform zurückkommt und die ursprüngliche Form weiter aktiv war. Dies wird bei "Userform_Activate" offenbar nur einmal gemacht (wenn sie aktiviert wird), nicht, wenn ich von einer anderen Userform zurückkomme.
Oder kann ich durch einen Befehl irgendwie provozieren, dass "Activate" noch mal ausgelöst wird? Ich hatte das an anderer Stelle mal so gemacht, dass ich die komplette UserForm schließe und dann erneut aufrufe (dann greift auch Activate). Aber da muss es doch auch etwas einfacheres geben, um das zu erreichen (z.B: einen "Refresh"-Befehl), oder?
Anzeige
AW: Userform aktualisieren
27.12.2019 15:31:40
Nepumuk
Hallo,
dann lagere die Aktualisierung in eine eigene Prozedur aus und rufe diese sowohl aus dem Initialize-Event als auch hinter der .Show-Methode der sekundär-UserFormen auf.
Gruß
Nepumuk
AW: Userform aktualisieren
27.12.2019 18:36:49
onur
Und was hindert dich daran, die "Haupt"-Userform zu schliessen, wenn du Andere aufmachst?
Dann wird Initialize auch wieder ausgelöst.
Anzeige
AW: Userform aktualisieren
27.12.2019 21:25:34
Jubel
Prinzipiell nichts, aber ich hatte es als unelegant empfunden, dass ich immer die ganze Userform schließen und wieder aufrufen muss, um die Werte zu aktualisieren. Ich hätte erwartet, dass es sowas wie einen Refresh-Befehl gibt. Oder aber sowas wie "On Focus", so dass ich die darunter gesammelten Befehle immer dann ausführen lassen kann, wenn die UserForm noch offen ist und wieder in den Fokus kommt (weil die danach aufgemachte Form geschlossen wurde).
Anzeige
AW: Userform aktualisieren
27.12.2019 21:31:23
onur
Ich hingegen finde es unelegant, eine Userform zu zeigen, die momentan nicht gebraucht wird.
;
Anzeige
Anzeige

Infobox / Tutorial

Userform Aktualisieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Userform in Excel VBA zu aktualisieren, kannst Du folgende Schritte befolgen:

  1. Erstelle eine eigene Prozedur für die Aktualisierung:

    • Lege eine Sub-Prozedur an, die alle Aktualisierungsbefehle für Deine Userform enthält.
    Private Sub AktualisiereUserform()
       ' Beispiel: Aktualisierung eines Labels
       Me.Label1.Caption = ThisWorkbook.Sheets("Daten").Range("A1").Value
       ' Füge hier weitere Aktualisierungsbefehle hinzu
    End Sub
  2. Rufe diese Prozedur im UserForm_Activate Event auf:

    • Füge den Aufruf Deiner Aktualisierungsprozedur in die UserForm_Activate-Methode ein.
    Private Sub UserForm_Activate()
       Call AktualisiereUserform
    End Sub
  3. Rufe die Aktualisierungsprozedur auch beim Schließen der zusätzlichen Userforms auf:

    • Wenn Du von einer zusätzlichen Userform zurückkehrst, stelle sicher, dass Du die Aktualisierungsprozedur aufrufst.
    ' Beispiel: Aufruf beim Schließen der zweiten Userform
    Private Sub btnClose_Click()
       Call HauptUserform.AktualisiereUserform
       Unload Me
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Die Userform aktualisiert sich nicht, wenn Du von einer anderen Userform zurückkehrst.

    • Lösung: Stelle sicher, dass Du die Aktualisierungsprozedur in der richtigen Reihenfolge aufrufst, wie im vorherigen Abschnitt beschrieben.
  • Fehler: Die Labels zeigen falsche Daten an.

    • Lösung: Überprüfe, dass die Zellen, auf die Du zugreifst, die richtigen Werte enthalten. Du kannst auch Debug.Print verwenden, um die Werte zu überprüfen.

Alternative Methoden

Eine alternative Methode wäre die Verwendung des UserForm_QueryClose-Events, um die Haupt-Userform beim Schließen der zusätzlichen Userform zu aktualisieren.

Private Sub UserForm_QueryClose(Cancel As Integer)
    Call HauptUserform.AktualisiereUserform
End Sub

Eine weitere Möglichkeit ist die Nutzung von DoEvents, um sicherzustellen, dass alle Prozesse abgeschlossen sind, bevor die Userform aktualisiert wird.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine Userform mit einem Button und einem Label erstellst, die ihre Inhalte aktualisiert, wenn Du zwischen Userforms wechselst.

Private Sub UserForm_Initialize()
    Me.Label1.Caption = "Willkommen!"
End Sub

Private Sub btnNextUserform_Click()
    ' Öffne eine andere Userform
    Userform2.Show
End Sub

Private Sub UserForm_Activate()
    Call AktualisiereUserform
End Sub

In diesem Beispiel wird das Label bei jeder Aktivierung der Haupt-Userform aktualisiert.


Tipps für Profis

  • Nutze Me innerhalb Deiner Userform, um auf die Elemente der Userform zuzugreifen, was Deinen Code kürzer und übersichtlicher macht.
  • Überlege, ob Du ein Singleton-Muster für Deine Userforms verwenden möchtest, um Instanzen zu verwalten und die Leistung zu optimieren.
  • Verwende Private Sub UserForm_Initialize() für initiale Einstellungen und Private Sub UserForm_Activate() für Aktualisierungen, um die Trennung von Initialisierung und Aktualisierung zu gewährleisten.

FAQ: Häufige Fragen

1. Wie kann ich eine Userform aktualisieren, ohne sie zu schließen?
Du kannst die Aktualisierung in eine separate Prozedur auslagern und diese sowohl im UserForm_Initialize als auch im UserForm_Activate aufrufen.

2. Gibt es einen Befehl, um eine Userform zu refreshen?
Ein direkter "Refresh"-Befehl existiert nicht, aber Du kannst eine Prozedur erstellen, die alle notwendigen Aktualisierungen vornimmt, und diese aufrufen, wann immer es nötig ist.

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