Clever-Excel-Forum

Normale Version: Auswahl in Userform beibehalten, wenn nächste Userform angezeigt wird
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin

Folgendes, ich habe 3 Userformen, in der ersten kann eine Baugruppe und eine beliebige Anzahl Masten auf welche die Baugruppe angewendet werden soll ausgewählt werden. Mit einem CommandButton gelangt man dann zu Userform_Joch1 oder Userform_Mast1. Dabei wird die erste Userform ausgeblendet und die entsprechend nächste geladen:


Code:
If UserForm_Module.ComboBox1.Value = "MAST1" Then

'Zeigt Userform für Baugruppe MAST1 an
UserForm_Module.Hide
UserForm_Mast1.Show

'Zeigt Userform für Baugruppe JOCH1 an
ElseIf UserForm_Module.ComboBox1.Value = "JOCH1" Then

UserForm_Module.Hide
UserForm_Joch1.Show


...
End If
In den Baugruppen-Userformen wird dann die Stückliste der Baugruppe mit Pos., Beschreibung und Menge anzeigt und per CommandButtons können diese Angaben zu einer Materialliste hinzugefügt oder davon abgezogen weren.

Bei beiden Baugruppen-Userformen kann man über einen Command-Button zurück zur Userform_Module gelangen, welche zuvor nur ausgeblendet wurde. Jetzt ist es so, dass bei der in  _Mast1 die zuvor getätigte Auswahl der Userform_Module wieder angezeigt wird, bei _Joch1 jedoch nicht, dort sieht _Module aus wie neu geladen.

Der Code für den Zurück-CommandButton in den Baugruppen-Userformen ist ganz simpel:

Code:
Sub CommandButton_Back_Click()

Unload UserForm_Joch1 (resp. Unload UserForm_Mast1 bei der anderen)
UserForm_Module.Show

End Sub

Ist es nun irgendwie möglich das zu steuern, dass gezielt die zuvor getroffene Auswahl bei der _Module angezeigt wird oder ist das eine Eigenschaft die man der Userform zuweisen muss?

Ich habe es auch mit Userform_XXXX1.Hide statt mit Unload probiert, hat aber nichts geändert.

Danke im Voraus
Hallo Lopezoli,

deklariere eine Public-Variable, z.B. "MyFocus" als String. Dieser weist du beim Verlassen des Steuerelements den Namen des Steuerelementes zu, das später wieder den Fokus erhalten soll. Später fokusierst du auf das gewünschte Steuerelement dann über diese Variable (".SetFocus").

Viel Erfolg!
Ich kann dir ab dem 2. Satz nicht ganz folgen.

Also das mit dem
Code:
Public MyFocus as String
hab ich drin

Du meinst nun, beim wechseln von _Module zu _Joch1 soll:


Code:
If UserForm_Module.ComboBox1.Value = "JOCH1" Then
MyFocus = "Userform_Module"
Userform_Module.Hide
Userform_Joch1.Show
End if


Und dann im _Joch1:


Code:
Sub CommandButton_Back_Click()

Unload UserForm_Joch1
MyFocus.SetFocus

End Sub

Dann erscheint mir die Meldung: Fehler beim Kompilieren - Methode oder Datenobjekt nicht gefunden, bezogen auf das ".SetFocus"

Was mach ich falsch?
Hallöchen,

das ist schn ungewöhnlich:

MyFocus = "Userform_Module"

Ein Objekt wird mit Set zugewiesen Dodgy

Genauso das, wenn es sich um ein userform handelt:

MyFocus.SetFocus


Du könntest es z.B. durch nochmaliges .Show aktivieren.
Moin

Ist zwar ein Weilchen her, ich konnte aber herausfinden wo der Fehler autritt, aber nicht, wie ich den beheben kann.

Folgendes passiert bei diesem Sub in Userform_Joch1.
Code:
Sub CommandButton_Back_Click()

Unload UserForm_Joch1
UserForm_Module.Show

End Sub
Der ganze Initialize-Sub von _module wird durchlaufen, bevor es angezeigt wird. Die vorher getroffene Auswahl wurde zurückgesetzt.

Bei Userform_Mast1 hingegen
Code:
Sub CommandButton_Back_Click()

Unload UserForm_Mast1
UserForm_Module.Show

End Sub
Wird _moduel nur wieder eingeblendet, der Initilize-Sub wird aber nicht nochmals durchlaufen. Also wird die bereits getroffene Auswahl wieder angezeigt.

Woran liegt es nun, dass der Befehl Userform_Module.Show einem zu einem und beim anderen zu einem anderen Ergebnis führt?

Danke und Gruss
Wow!!

10 Monate für eine Rückmeldung an die Helfer - das nenne ich mal fix. Dodgy
Hallöchen,

@Günter, wir leben zum Glück ja noch Smile


leider sieht man nicht, ob die Userform_module in jedem Fall mit Hide ausgeblendet wurde, ist vielleicht doch irgendwo ein Unload dabei?