08.03.2019, 13:48
Moin
Ich hab eine Userform, aus der verschiedene andere Userformen geladen werden können, je nach Auswahl in Userform_1.
Nun soll es möglich sein, über einen CommandButton auf der Userform_a zurück auf die Userform_1 zu kommen, dort eine andere Auswahl zu treffen und somit die Userform_b zu öffnen.
Bisher hab ich immer mit Userform_X.Show resp. .Hide gearbeitet. Nun ist es aber so, dass wenn ich folgende Reihenfolge habe: _1 => _a => _1 => _b => _a
Dann wird beim 2. Mal wo _a.kommt, diese Userform nicht neu initialisiert. Deswegen hab ich mir gedacht ich könnte es so programmieren, dass jedes mal wenn von _1 aus eine andere Userform gestartet werden soll, zuerst alle vorher bereits geladenen Userformen mit 'Unload' geschlossen werden.
Den Code hab ich dafür:
Nur kommt beim Unload frm.Name die Meldung, dass ein Object erforderlich sei. Wenn ich nur Unload frm nehme, kommt dafür 'Ungültiger Prozeduraufruf oder ungültiges Argument'.
Ich kann auch nicht hingehen und sagen unload _a, unload _b, denn wenn die vorher gar nicht geladen wurden, kann er sie auch nicht unloaden.
Wäre es möglich aus frm_string den namen der userform zu nutzen, und den dann zu frm zuzuweisen, damit Unload frm klappt? Also den String frm_string einem Object zuzuweisen?
Danke im Voraus
Ich hab eine Userform, aus der verschiedene andere Userformen geladen werden können, je nach Auswahl in Userform_1.
Nun soll es möglich sein, über einen CommandButton auf der Userform_a zurück auf die Userform_1 zu kommen, dort eine andere Auswahl zu treffen und somit die Userform_b zu öffnen.
Bisher hab ich immer mit Userform_X.Show resp. .Hide gearbeitet. Nun ist es aber so, dass wenn ich folgende Reihenfolge habe: _1 => _a => _1 => _b => _a
Dann wird beim 2. Mal wo _a.kommt, diese Userform nicht neu initialisiert. Deswegen hab ich mir gedacht ich könnte es so programmieren, dass jedes mal wenn von _1 aus eine andere Userform gestartet werden soll, zuerst alle vorher bereits geladenen Userformen mit 'Unload' geschlossen werden.
Den Code hab ich dafür:
Code:
Dim frm As Object
Dim frm_string As String
For Each frm In UserForms
frm_string = frm.Name
If frm_string <> "UserForm_Module" Then
MsgBox frm.Name
Unload frm.Name
End If
Next
Nur kommt beim Unload frm.Name die Meldung, dass ein Object erforderlich sei. Wenn ich nur Unload frm nehme, kommt dafür 'Ungültiger Prozeduraufruf oder ungültiges Argument'.
Ich kann auch nicht hingehen und sagen unload _a, unload _b, denn wenn die vorher gar nicht geladen wurden, kann er sie auch nicht unloaden.
Wäre es möglich aus frm_string den namen der userform zu nutzen, und den dann zu frm zuzuweisen, damit Unload frm klappt? Also den String frm_string einem Object zuzuweisen?
Danke im Voraus