Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Problem mit UserForm.Show bzw. Hide

Problem mit UserForm.Show bzw. Hide
05.07.2005 14:14:25
Ines
Hallo,
habe ein Problem, das mir seit Tagen Kopfzerbrechen bereitet...
Nach einigen Wechsel zwischen unterschiedlichen Tabellenblättern (unterdrückt mit Application.Screenupdating = False) soll nach dem Schließen der UserForm wieder das Ausgangsblatt "Übersicht" gezeigt werden.
Tut er aber nicht... ;o( Habe schon alles Mögliche probiert (z.B. auch mit MsgBox - Coding siehe unten). Letztendlich wird aber immer wieder das falsche Blatt gezeigt.
Wundern tut mich auch, dass der Hide-Befehl im Coding immer wieder klein geschrieben (UserForm.hide) erscheint...
Hat jemand eine Idee? Vielleicht gibt es noch irgendwelche Eigenschaften im UserForm, an denen man schrauben muss?
Danke im voraus!
Liebe Grüße,
Ines
--------------------------------------
'Aufruf UserForm:
Sub Warenausgang()
Load UserForm1
UserForm1.show
Application.ScreenUpdating = False
Worksheets("Verbrauch").Activate
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3
--------------------------------------
'Beenden UserForm per CommandButton:
...
Worksheets("Wareneingang").Activate
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3
Worksheets("Übersicht").Select
Application.ScreenUpdating = True
Unload UserForm2
UserForm2.hide
Application.ScreenUpdating = False
MsgBox ("Test")
Worksheets("Übersicht").Activate
Application.ScreenUpdating = True
--------------------------------------
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit UserForm.Show bzw. Hide
05.07.2005 14:19:47
Matthias
Hallo Ines,
alles nach Unload wired nicht mehr ausgeführt, weil das UF incl. Code ja entlasen wurde.
Also Unload ans Ende stellen!
Gruß Matthias
AW: Problem mit UserForm.Show bzw. Hide
06.07.2005 07:57:59
Ines
Hallo Matthias,
danke für die prompte Antwort!
Den Unload habe ich erst später eingefügt als Versuch der Problemlösung... Hilft also leider nicht weiter... ;o(
Weiterhin habe ich auch schon alle möglichen Konstellationen durch, von wegen Reihenfolge der Befehle und so - alles vergeblich...
Mache ich denn mit dem Befehl bzw. den Einstellungen im Userform irgendwas falsch, dass z.B. auch das hide konsequent klein da steht? Woran kann das liegen?
Liebe Grüße,
eine sehr verwirrte Ines
Anzeige
AW: Problem mit UserForm.Show bzw. Hide
06.07.2005 08:47:43
Matthias
Hallo Ines,
ein paar Unstimmigkeiten sind mir noch aufgefallen:

'Aufruf UserForm:
Sub Warenausgang()
Load UserForm1
UserForm1.show
Application.ScreenUpdating = False
Worksheets("Verbrauch").Activate
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3

Das "Load UserForm1" kannst du weglassen, es wird beim .Show-Befehl automatisch geladen. Und wenn das Userform die Eigenschaft "ShowModal" = True hat (das ist die Voreinstellung), wird der nachfolgende Code erst ausgeführt, wenn das Userform mit Hide oder Unload geschlossen wird.
Hier steht ja dann "Worksheets("Verbrauch").Activate", ergo wird nach dem Schließen dieses Blatt aktiviert. Egal, was in der CommandButton_Click()-Prozedur vorher ausgeführt wurde.
Gruß Matthias
Anzeige
AW: Problem mit UserForm.Show bzw. Hide
06.07.2005 08:47:52
Matthias
Hallo Ines,
ein paar Unstimmigkeiten sind mir noch aufgefallen:

'Aufruf UserForm:
Sub Warenausgang()
Load UserForm1
UserForm1.show
Application.ScreenUpdating = False
Worksheets("Verbrauch").Activate
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3

Das "Load UserForm1" kannst du weglassen, es wird beim .Show-Befehl automatisch geladen. Und wenn das Userform die Eigenschaft "ShowModal" = True hat (das ist die Voreinstellung), wird der nachfolgende Code erst ausgeführt, wenn das Userform mit Hide oder Unload geschlossen wird.
Hier steht ja dann "Worksheets("Verbrauch").Activate", ergo wird nach dem Schließen dieses Blatt aktiviert. Egal, was in der CommandButton_Click()-Prozedur vorher ausgeführt wurde.
Gruß Matthias
Anzeige
AW: Problem mit UserForm.Show bzw. Hide
06.07.2005 08:48:05
Matthias
Hallo Ines,
ein paar Unstimmigkeiten sind mir noch aufgefallen:

'Aufruf UserForm:
Sub Warenausgang()
Load UserForm1
UserForm1.show
Application.ScreenUpdating = False
Worksheets("Verbrauch").Activate
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3

Das "Load UserForm1" kannst du weglassen, es wird beim .Show-Befehl automatisch geladen. Und wenn das Userform die Eigenschaft "ShowModal" = True hat (das ist die Voreinstellung), wird der nachfolgende Code erst ausgeführt, wenn das Userform mit Hide oder Unload geschlossen wird.
Hier steht ja dann "Worksheets("Verbrauch").Activate", ergo wird nach dem Schließen dieses Blatt aktiviert. Egal, was in der CommandButton_Click()-Prozedur vorher ausgeführt wurde.
Gruß Matthias
Anzeige
Ups - sorry - o.T.
06.07.2005 08:49:37
Matthias
-
AW: Ups - sorry - o.T.
06.07.2005 09:40:16
Ines
Hallo Matthias,
;o))) Jetzt klappt es!
1000 Dank für den Denkanstoß! Ich habe die ganze Zeit versucht beim SCHLIESSEN der Form einzugreifen...
Jetzt habe ich im AUFRUFENDEN Sub nach dem "Worksheets("Verbrauch").Activate" einfach das vorgesehene Blatt "Übersicht" aktiviert (siehe unten) - und schwupps, da klappt es! So einfach kann das sein! ;o)
Show und hide stehen zwar immer noch in Kleinschrift da, aber das scheint ja nicht zu stören... Also sei's drum.
Besten Dank noch mal,
eine wieder schlauere Ines ;o)

Sub Warenausgang()
Load UserForm1
UserForm1.show
Application.ScreenUpdating = False
Worksheets("Verbrauch").Activate
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3
Worksheets("Übersicht").Activate
End Sub

Anzeige
AW: Ups - sorry - o.T.
06.07.2005 09:47:57
Matthias
Hallo Ines,
mach mal dies in eine neue Mappe:
1. Userform erstellen
2. Modul erstellen
ins Modul:

Sub test()
Dim show As Integer
show = 1
UserForm1.show
End Sub

Dann lösche die Zeilen Dim... und show = 1.
Trotzdem wird show immer klein bleiben, egal was du machst...
Weiß auch nicht, woran das liegt.
Aber hauptsache, es funktioniert.
Gruß Matthias
Anzeige
AW: Ups - sorry - o.T.
06.07.2005 10:03:52
Ines
Hallo Matthias,
kurios, gell? Aber wie Du schon sagtest: Hauptsache es funktioniert!
Hat mich ein paar Tage und Nerven gekostet...
Danke & Groetjes,
Ines
;
Anzeige
Anzeige

Infobox / Tutorial

Probleme mit UserForm.Show und Hide in Excel VBA


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne den VBA-Editor mit ALT + F11 und füge eine neue UserForm hinzu.

  2. Code für das Laden der UserForm:

    Sub Warenausgang()
       UserForm1.Show
    End Sub

    Hinweis: Das Load UserForm1 ist nicht notwendig, wenn du UserForm1.Show verwendest, da die UserForm automatisch geladen wird.

  3. UserForm schließen: Um die UserForm zu schließen, verwende den Code im CommandButton:

    Private Sub CommandButton1_Click()
       Unload Me
    End Sub
  4. Sichtbarkeit der UserForm steuern: Um die UserForm auszublenden, ohne sie zu entladen, kannst du Me.Hide verwenden:

    Private Sub CommandButton2_Click()
       Me.Hide
    End Sub
  5. Aktivieren des gewünschten Arbeitsblatts: Stelle sicher, dass das gewünschte Blatt aktiviert wird, nachdem die UserForm geschlossen wurde:

    Worksheets("Übersicht").Activate

Häufige Fehler und Lösungen

  • Problem: userform.show not working

    • Lösung: Überprüfe, ob die UserForm korrekt im VBA-Projekt vorhanden ist. Wenn du die UserForm nicht sehen kannst, könnte sie nicht geladen worden sein.
  • Problem: UserForm.hide wird immer klein geschrieben.

    • Lösung: Dies ist ein bekanntes Verhalten in VBA und wirkt sich nicht auf die Funktionalität aus. Du kannst die Funktion dennoch wie gewohnt verwenden.
  • Problem: Nach dem Schließen der UserForm wird das falsche Blatt angezeigt.

    • Lösung: Stelle sicher, dass der Code zum Aktivieren des Arbeitsblatts nach dem Schließen der UserForm ausgeführt wird, nicht innerhalb der UserForm.

Alternative Methoden

  • Verwendung von VBA Me.Hide: Anstelle von Unload, kannst du Me.Hide verwenden, um die UserForm auszublenden, während die Instanz erhalten bleibt.

  • UserForm als nicht-modales Fenster: Setze die Eigenschaft ShowModal auf False, wenn du möchtest, dass der Benutzer weiterhin mit anderen Excel-Fenstern interagieren kann.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie die UserForm geladen und anschließend die Sichtbarkeit gesteuert wird:

Sub Warenausgang()
    UserForm1.Show
    Worksheets("Verbrauch").Activate
    ' Automatisches Filtern
    Selection.AutoFilter Field:=1
    Worksheets("Übersicht").Activate
End Sub

Private Sub CommandButton1_Click()
    ' UserForm schließen
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    ' UserForm ausblenden
    Me.Hide
End Sub

Tipps für Profis

  • Debugging: Verwende MsgBox zur Fehlerbehebung. Eine einfache Ausgabe kann dir helfen zu verstehen, ob bestimmte Abschnitte deines Codes erreicht werden.

  • Modularer Code: Halte deinen Code modular, indem du separate Sub-Prozeduren für unterschiedliche Aufgaben erstellst. Dies erleichtert das Testen und Debuggen.

  • Ereignisgesteuertes Programmieren: Nutze Ereignisse in der UserForm, um spezifische Aktionen auszulösen, wenn der Benutzer mit der Form interagiert.


FAQ: Häufige Fragen

1. Warum funktioniert userform1.show nicht? Überprüfe, ob UserForm1 im Projekt vorhanden ist und ob der Name korrekt geschrieben ist.

2. Wie kann ich die UserForm im Hintergrund halten? Stelle die ShowModal-Eigenschaft der UserForm auf False, sodass der Benutzer weiterhin mit Excel interagieren kann.

3. Was ist der Unterschied zwischen hide und unload? Hide blendet die UserForm aus, während Unload die UserForm aus dem Speicher entfernt. Bei Unload sind alle Werte und Einstellungen verloren.

4. Warum steht userform.hide immer klein geschrieben? Dies ist ein typisches Verhalten in VBA, das die Funktionalität nicht beeinträchtigt. Es bleibt dennoch funktionsfähig.

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