Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

das böse X in der UserForm...

909 views
Skip to first unread message

Rene Bauer

unread,
Mar 13, 2002, 10:56:10 AM3/13/02
to
... bin ich blind oder gibts wirklich keine(n) Funktion/Befehl oder was auch
immer um das "X" zum Fensterschliessen in einer UserForm auszublenden oder
zu deaktivieren???

Gruss Rene


Philipp von Wartburg

unread,
Mar 13, 2002, 11:10:09 AM3/13/02
to
Hallo

Deaktivieren geht einfach:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub

Zu Ausblenden fällt mir nichts ein.

Gruss
Philipp

Rene Bauer schrieb in Nachricht ...

Rene Bauer

unread,
Mar 13, 2002, 11:25:07 AM3/13/02
to
THX a lot!!!... ich dachte schon ich werd wahnsinnig... das klappt

Obwohl mir dieser Befehl vom Sinn her nicht ganz klar ist??!! ... Cancel =
True? ... also funktionieren tut es, aber wie wirkt er?

Rene.

"Philipp von Wartburg" <philipp.vo...@bluewin.ch> schrieb im
Newsbeitrag news:3c8f7a1f$1...@news.bluewin.ch...

Philipp von Wartburg

unread,
Mar 13, 2002, 12:26:48 PM3/13/02
to
Hallo Rene

Da Dir mit einem "Schau in der Hilfe nach!" kaum gedient ist, hier ein
bisschen Theorie:

In VBA respektive in Windows gibt es Ereignisse, die nicht direkt vom
Benutzer oder VBA sondern von einem anderen "Objekt" aufgerufen werden. Man
spricht hier von einer aufrufenden Programmebene. Gute Beispiele sind die
Mouse-Events (z.B. Mouse_Move) und das UserForm_QueryClose-Ereignis. Hier
ruft das Windows-System (genau genommen die Maus beziehungsweise das
Formular) die Ereignisse auf. In VB/VBA können die Ereignisse empfangen und
die an die Ereignisprozedur übergebenen Parameter ausgelesen werden.

MouseMove beispielsweise stellt die Parameter Button, Shift, X und Y zur
Verfügung, welche abgefragt werden können und je nach Wert entsprechend
darauf reagiert werden kann.

QueryClose empfängt das Schliessen-Ereignis eines Formulares und stellt zwei
Parameter zur Verfügung: Cancel und CloseMode. Der Witz ist nun, dass Cancel
nicht (nur) abgefragt sondern gesetzt werden kann. Das QueryClose-Ereignis
wird nämlich von Windows aufgerufen, und man wollte eine Möglichkeit
bereitstellen, mit welcher Windows (sprich der aufrufenden Programmebene)
mitgeteilt werden kann, dass das eingetretene Ereignis einen anderen Verlauf
nehmen soll (sprich der Unload-Vorgang abgebrochen werden kann).

Wenn Du den zweiten Parameter CloseMode betrachtest, macht das Ganze immer
mehr Sinn. CloseMode gibt den Grund für das QueryClose an. Wird nämlich das
Schliessen-Ereignis von Windows (in der Regel bei ShutDown und User Logoff)
oder vom Task Manager aufgerufen, muss ja irgendwie verhindert werden, dass
das Fenster nicht einfach entladen wird. Der Benutzer (und auch die
jeweilige Anwendung) muss die Möglichkeit haben, intervenieren und
beispielsweise allfällige noch nicht gespeicherte Daten speichern zu können.

Ereignisse mit derartigen Parametern gibt es recht viele:
TextBox_DblClick
TextBox_KeyPress
TextBox_KeyUp
TextBox_KeyDown
TextBox_Exit
TextBox_Error
UserForm_BeforeDropOrPaste
UserForm_BeforeDragOver
usw...

Ich würde vor allem TextBox_Exit und TextBox_KeyPress mal genauer studieren.
Diese sind für das Verhindern und Prüfen von Fehleingaben sehr nützlich.

Philipp von Wartburg

unread,
Mar 13, 2002, 12:33:09 PM3/13/02
to
Hallo Rene

Gruss

Jens Heidenreich

unread,
Mar 14, 2002, 4:44:39 AM3/14/02
to
habe mal in die Hilfe geschaut und folgenden Code gefunden

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

' Schließen des Formulars mit der Schliessen-Schaltfläche verhindern
If CloseMode <> 1 Then Cancel = 1
End Sub
denn mit dem Code von Philipp war ein Schliessen per Unload Me auch nicht
mehr möglich
aber über den oben angegebenen Code wird nur das X abgefangen
Gruss, Jens

"Rene Bauer" <try...@hotmail.com> schrieb im Newsbeitrag
news:O$OFIeqyBHA.2600@tkmsftngp07...

Philipp von Wartburg

unread,
Mar 14, 2002, 1:21:46 PM3/14/02
to
Jens, hast recht. Ich habe die Form über die Beenden-Schaltfläche
des VBA-Editors geschlossen, was etwas gar einfach ist.

Gruss
Philipp


Jens Heidenreich schrieb in Nachricht ...

0 new messages