Deaktivieren VBA-UserForm 'x', aber immer noch erlauben, Mich Entladen
Ich habe eine user-form, die, wenn geschlossen, muss zum ausführen von cleanup-Schritte. Ich möchte für das X
- Taste deaktiviert werden und/oder nicht sichtbar ist, aber ich muss immer noch in der Lage sein, um das Formular zu entladen. Ich habe code wie unten, aber es blockiert auch Unload Me
.
'Disables closing via x button
Sub UserForm_QueryClose(Cancel As Integer, ClsoeMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox ("BLOCKED")
Cancel = True
End If
End Sub
InformationsquelleAutor steventnorris | 2013-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie nicht die
UserForm_QueryClose
in einem solchen Fall. Verwenden Sie die APIRemoveMenu
,GetSystemMenu
undFindWindow
Diese ist mein fav-Website für APIs
RemoveMenu : http://allapi.mentalis.org/apilist/RemoveMenu.shtml
GetSystemMenu : http://allapi.mentalis.org/apilist/GetSystemMenu.shtml
FindWindow : http://allapi.mentalis.org/apilist/FindWindow.shtml
Diesem Beispiel sehen
Screenshot:
Der name der Bibliothek ist bereits in der declare-Funktion. Nein. Sie haben zu erklären, dass diese an der Spitze.
Danke. Ich habe recherchiert, dieser Methode und etwas gefunden, das besser für meinen Fall. Anstatt deaktivieren, werde ich mit einem boolean, um zu bestimmen, ob die X-Taste angenommen wird oder nicht, in der UserForm_QueryClose. Ich bin der Annahme Ihrer Antwort, aber als es beantwortet die OP. Nochmals vielen Dank!
Ich habe nicht downvote Sie, aber ich weiß, es gibt eine Menge Leute, die glauben, in messing mit einer bereits bestehenden Benutzeroberfläche für eine Anwendung, die nicht Sie benutzerdefinierte gebaut wurde, ist ein großes no-no. Wahrscheinlich jemand mit dieser Einstellung würde ich davon ausgehen.
Danke. 🙂 Gut, ich habe viele von Ihnen. Sie wirklich unterschätzen die macht von APIs. Ich weiß schon, wer downvoted mich. Ich wollte sehen, ob diese person war anständig genug, um einen Kommentar zu hinterlassen. Ich wirklich kümmern sich nicht über die Punkte. All diese Punkte können nicht kaufen, mir eine Harley 😉
InformationsquelleAutor Siddharth Rout
Statt, sodass der Benutzer eine Meldung, er kann nicht klicken Sie auf das rote x, Falle es, wie Sie getan, und das tun die Bereinigung vor dem entladen der form:
Wenn das Formular über eine Schaltfläche schließen, dass nicht die Bereinigung, dann verwenden Sie etwas wie dieses:
Keine Notwendigkeit, über Bord gehen mit Windows-APIs, da diese alle eingebaut.
InformationsquelleAutor Jon Peltier
Ich weiß, das ist ein altes Futter, aber Sie Dinkel
ClsoeMode
falsch. Ändern Sie einfach, dass zuCloseMode
- und dies sollte Ihr Problem beheben.InformationsquelleAutor Scott M