Ausblenden schließen [X] - Taste auf der excel-vba-userform für meine progress bar
Erstellt habe ich eine userform, um ein Fortschrittsbalken angezeigt, wenn das makro noch importieren Blätter
Das problem ist, der Benutzer kann drücken Sie die rote [X] Schaltfläche schließen wird und interrupt-Verarbeitung durchgeführt.
Gibt es eine Möglichkeit, dies zu verbergen rote Taste of doom, so dass potenzielle Anwender haben keine verwirrenden Tasten zu klicken, während es läuft.
edit:
Habe ich versucht, dieses
'Find the userform's Window
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'Get the current window style
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
'Set the new window style
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Const GWL_STYLE = -16
Const WS_SYSMENU = &H80000
und ich habe diese auf userform_initialize
Dim hWnd As Long, lStyle As Long
'Which type of userform
If Val(Application.Version) >= 9 Then
hWnd = FindWindow("ThunderDFrame", Me.Caption)
Else
hWnd = FindWindow("ThunderXFrame", Me.Caption)
End If
'Get the current window style and turn off the Close button
lStyle = GetWindowLong(hWnd, GWL_STYLE)
SetWindowLong hWnd, GWL_STYLE, (lStyle And Not WS_SYSMENU)
Bin ich immer diese Fehlermeldung
dieser code wurde aus hier. Ich weiß nicht, was ich falsch mache und ich schon die Kommentare entfernt. Dies ist der einfachste code, den ich gefunden habe, so möchte ich ihn integrieren, um zu meinem userform. Jede Hilfe ist willkommen.
- Die Antwort auf diese Frage kam, als mein top-suchergebnis. Hast du etwas ausprobieren?
- aktualisiert mit ein paar mehr Infos
- Könnten Sie das klären und ändern Sie das Wort 'deaktiviert' auf 'ausblenden und deaktivieren" wenn dies ist, was Sie beabsichtigen zu tun? Das deaktivieren der Funktion ist relativ einfach. Verstecken scheint es nicht zu sein.
- Haben Sie versucht, den code da unten?
- Um das problem zu beheben Sie zeigen in der Abbildung: verschieben Sie die API-Deklaration an den Anfang des Moduls!
- ein Freund ist auch aufgefallen, dass an diesem morgen, so war es gerade behoben, danke. Wusste nicht, dass man nicht einfach einen code-block, der überall in VBA. Ich dachte nur
Options
sollte an der Spitze. - möglich, Duplikat der so entfernen Sie den schließen(x) option aus excel-userform?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unten ist eine routine, die Sie aufrufen können wie diese:
oder in Ihrer form:
Hier ist der code, den Sie benötigen:
Call DrawMenuBar(HWnd)
und Ihre Erklärung. Auch die Erklärungen sind Durcheinander und funktioniert nicht mit Office 64, siehe jkp-ads.com/articles/apideclarations.asp.FindWindow(vbNullString, frm.Caption)
kann es passieren, dass wenn deine UserForm hat den gleichen Beschriftung wie jedes andere Programm-Fenster, dass seine [x] - Taste wird entfernt, statt der UserForm die [x] Taste. Ich stellte eine verbesserte Funktion unter BindungFindWindow
zu UserForms und einschließlich x64-sichere API-Aufrufe.Können Sie arbeiten es aus den folgenden Schnipsel:
Wählen Sie die
cmdClose
- TasteAuf der Menüleiste, wählen Sie
View | Code
Dort, wo der cursor blinkt, geben Sie den folgenden code:
In der Menüleiste, wählen Sie
View | Object
, zurück auf die UserForm.Um Benutzern zu ermöglichen, schließen Sie das Formular durch drücken der Esc-Taste:
Wählen Sie die Taste cmdClose
Im Fenster Eigenschaften, ändern Sie die
Cancel
EigenschaftTrue
Zu verhindern, dass Benutzer schließen Sie das Formular durch klicken auf die Schaltfläche "X"
Wenn die
UserForm
ist eröffnet, es ist einX
oben rechts. Zusätzlich zur Verwendung des "Formular Schließen" button werden die Menschen in der Lage sein, um das Formular zu schließen, indem Sie mit dem X. Wenn Sie verhindern möchten, befolgen Sie diese Schritte.Rechten Maustaste auf eine leere Stelle in der UserForm
Wählen Sie
View | Code
Aus dem Prozedur-dropdown-Menü am oberen rechten, wählen Sie " QueryClose -
Dort, wo der cursor blinkt, und fügen Sie den hervorgehobenen code aus dem folgenden Beispiel
In der Menüleiste, wählen Sie
View | Object
, zurück auf die UserForm.Nun, wenn jemand klickt auf die
X
in der UserForm, sehen Sie Ihre Nachricht.vom http://www.contextures.com/xlUserForm01.html
Dies ist eine Verbesserung der oben genannten Antwort von @Peter Albert
FindWindow
Ruf wurde verbessert, um finden Sie Excel-UserForms nur. Die Funktion in der ursprünglichen Antwort sucht jedes Fenster der Klasse (z.B. Explorer, windows und andere Programm für windows). Daher könnte es passieren, dass die [x] - Taste des anderen Programme oder explorer-Fenster wurden entfernt, wenn Ihr name war der gleiche name, wie die UserForm.Bitten Sie den Benutzer, wenn Sie wollen, um das Formular zu schließen - und verlieren Bearbeitungen (sagen).
Basierend auf Ideen von Justin & Peter.
Edit: Eigentlich merke ich, das ist ein bisschen off-topic als OP entfernen wollte, die X-option - aber dennoch finde ich dieses handy für interaktive Formulare.
Ich weiß, das ist eine alte Frage, aber für die Art der Benutzer form, die der OP zitiert, die Sie nicht haben, zu entfernen, zu verdecken oder deaktivieren der Schaltfläche schließen. Es gibt einen viel einfacheren Weg 😉
Für alle Benutzer form, die keine Elemente, die der Benutzer interagiert mit (Tasten etc) und die wird sich zu schließen, wenn er beendet hat seinen Zweck, einfach deaktivieren Sie die form in Ordnung ist.
Zum deaktivieren der user form:
In der user-form die Eigenschaften, gegen die es ermöglicht, Falsch. Das Benutzerformular wird zeigen, bis er den code verrät es zu verbergen. Der Benutzer wird nicht in der Lage sein, alles zu tun, um die form (nicht schließen, nicht verschieben etc).
Beachten Sie auch, dass, ob Sie möchten, dass der Benutzer in der Lage sein, irgendetwas anderes zu tun in der Haupt-Fenster, während der Benutzer die form wird noch zeigen, die entscheidet, ob du eingestellt ShowModal.
Hilfreich Schaltfläche deaktivieren ist Folgendes zu tun:
Obwohl dies nicht loszuwerden auf den Knopf, aber es macht Sie auf Sie klicken, erreichen nichts.