Status einer Userform abfragen

10/06/2010 - 17:11 von hotzi | Report spam
Hallo zusammen,

ich habe eine Userform2 die als zweiter Schritt von verschiedenen 1.
Userformen aufgerufen wird. Wie kann ich der 2. Userform auf dem
Zurück-Button klarmachen, welche Userform1 gerade geladen ist?

Freue mich auf eine Antwort
Kaus
 

Lesen sie die antworten

#1 Andreas Killer
10/06/2010 - 20:56 | Warnen spam
hotzi schrieb:

ich habe eine Userform2 die als zweiter Schritt von verschiedenen 1.
Userformen aufgerufen wird. Wie kann ich der 2. Userform auf dem
Zurück-Button klarmachen, welche Userform1 gerade geladen ist?


Nur durch eine globale Variable die von jeder rufenden Userform
gesetzt und von Userform2 dann abgefragt werden kann.

Genau auf diese Weise bekommst Du dann auch Werte von Userform2 in die
aufrufende zurück. Obwohl das so nicht ganz stimmt...

Man kann auch Werte über Ereignisse zurückgeben / empfangen.

Mach mal eine neue Mappe, füge eine Userform ein und platziere auf ihr
einen Commandbutton. Dies ist Userform1.

Füge eine weitere Userform ein und platziere auf ihr 2 Commandbutton.
Dies ist Userform2.

In Userform2 fügst Du nun diesen Code ein:

schnipp
Public Event KnopfKlick(Wert As Variant)

Private Sub CommandButton1_Click()
MsgBox "Aufruf durch " & ufCaption
RaiseEvent KnopfKlick(1)
End Sub

Private Sub CommandButton2_Click()
MsgBox "Aufruf durch " & ufCaption
RaiseEvent KnopfKlick(2)
End Sub

Private Sub UserForm_Click()
MsgBox "Aufruf durch " & ufCaption
RaiseEvent KnopfKlick(0)
End Sub
schnapp

Und in Userform1 diesen Code:

schnipp
Dim WithEvents KK As UserForm2

Private Sub CommandButton1_Click()
ufCaption = Me.Caption
UserForm2.Show vbModeless
End Sub

Private Sub KK_KnopfKlick(Wert As Variant)
MsgBox "Empfangener Wert in " & Me.Caption & ": " & Wert
End Sub

Private Sub UserForm_Initialize()
Set KK = UserForm2
End Sub
schnapp

In ein normales Modul diesen Code:

schnipp
Public ufCaption As String

Sub Test()
UserForm1.Show vbModeless
End Sub
schnapp

Starte die Userform1 mit der Sub Test, klick mal ein bißchen rum und
probier aus was passiert.

Die Userforms müssen nicht ungebunden sein, ich habs nur deshalb
gemacht weil es interessant wird wenn es außerdem eine weitere
Userform3 gibt die mit Userform1 identisch ist und man beide
Userformen aus einem normalen Modul heraus so startet:

Sub Test()
UserForm3.Show vbModeless
UserForm1.Show vbModeless
End Sub

Nun kann man ja jederzeit mal eine Userform zumachen und auch wiederum
jederzeit über Alt-F8 aus der Excel-Oberflàche das Makro Test starten.

Versuch macht kluch... oder nich? ;-)

Andreas.

Ähnliche fragen