UserForm durch CommandButton schließen

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Es gibt meine ich kein Close. Versuche es mit Hide.

Woher ich das weiß:Berufserfahrung – Programmierer

AquaMedium 
Beitragsersteller
 13.04.2015, 13:53

Habe ich schon versucht..

"Fehler beim Komplieren: Methode oder Datenobjekt nicht gefunden"

Suboptimierer  13.04.2015, 13:56
@AquaMedium

Dann findest du das Datenobjekt nicht, weil die Methode Hide gehört definitiv zum UserModul. Das habe ich gerade ausgetestet.

Funktioniert Show denn? Wenn ja, wundert es mich, das Hide nicht funktioniert. Vermutlich rufst du Hide am falschen Ort auf, von dem das Objekt nicht referenziert werden kann.

AquaMedium 
Beitragsersteller
 13.04.2015, 14:06
@Suboptimierer

Kannst du das mal in den von mir gescheieben Code einsetzen und mir schreiben?

Suboptimierer  13.04.2015, 14:17
@AquaMedium
Private Sub CommandButton1_Click()
  UserForm2.Show False
  If Not OptionButton1 Then _
      UserForm2.Hide
End Sub

Das aufrufende Form musst du noch auf ShowModal=False setzen. 

Das ist das Einfachste. Sauberer wäre es natürlich, wenn du irgendwie abfragen würdest, ob schon Show aufgerufen wurde. Vielleicht mit .Visible? Probiere es mal aus.

Die korrekte Lösung für das Schliessen lautet:

Unload UserForm2

Set UserForm2 = Nothing (=optional, aber sinnvoll)

Mit dem Befehl Me.Hide rückst du die UserForm nur in den Hintergrund. Sie ist nicht geschlossen! (Ist aber manchmal auch recht nützlich)


An jene, die sagen Me.hide ginge auch: Einfach in einer Schleife die UserForm aufrufen (UserForm2.Show) und per UserForm2.hide in den Hintergrund rücken.

Nach kurzer Zeit hat man dann einen Stapelüberlauf.

Entweder mit .hide oder mit unload [form]

Wenn es das aktive UserForm ist das du schließen möchtest und in dem du den Code ausführst dann mit:

Me.hide oder unload me


AquaMedium 
Beitragsersteller
 13.04.2015, 13:55

Klappt beides nicht..

Wie würdest du es denn rein schrieben? Villeicht mache ich da ja einen Fehler.

Z.b. mit:

Form1.Hide()

oder:

Form1.Close()

oder:

Me.Close