Gruss Rene
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 ...
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...
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.
Gruss
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...
Gruss
Philipp
Jens Heidenreich schrieb in Nachricht ...