Anzeige
Archiv - Navigation
1180to1184
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
UserForm anpassen: Kein Kreuz zum Schliessen
Holger
Hallo und Guten Morgen,
ich erstelle gerade ein UserForm und stelle fest, ein schlauer User könnte auf die Idee kommen,
dieses einfach wegzuklicken.
Wie kann man dies abfangen? Ich sehe in den Properties nichts, um das Kreuz zu entfernen
und kenne auch kein Ereignis dazu.
Ich möchte, dass der User erst weitermachen kann, wenn er in eine TextBox, das auf dem Formular liegt, etwas eingegeben hat.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: UserForm anpassen: Kein Kreuz zum Schliessen
26.10.2010 08:32:26
ing.grohn
Hallo Holger,
ich mach folgendermaßen:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Userform darf nicht mit Kreuz geschlossen werden", vbCritical, "FEHLER"
Cancel = True
End If
End Sub

mit freundlichen Grüßen
Albrecht
AW: UserForm anpassen: Kein Kreuz zum Schliessen
26.10.2010 08:42:55
Holger
Hallo Albrecht,
Danke für deinen Code, wo muss ich ihn denn unterbringen?
Denn ich habe FormularName.Show und dann die Textboxt.Activate.
AW: UserForm anpassen: Kein Kreuz zum Schliessen
26.10.2010 08:55:09
ing.grohn
Hallo Holger,
klicke Deine Userform an und kopiere den Code dort hinein.
Denke aber daran, dass Du einen Button hast, mit dem Du die Userform beenden kannst.
Das Kreuz ist ja nun weg!
Wenn Du im Codebereich der Userform bist, kannst Du rechts oben auch sehen (Pfeil nach unter), dass es dieses Ereignis für die Userform gibt.
Mit freundlichen Grüßen
Albrecht
Anzeige
Ok, ich probiere es, Danke Dir!!! k.t.
26.10.2010 09:19:33
Holger
Weitere Möglichkeit: Kreuz nicht zulassen
26.10.2010 09:06:42
Martin
Hallo Holger,
wenn das Kreuz einfach weg soll, dann nimm folgenden Code:
Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Const GWL_STYLE = -&H10
Private Const WS_SYSMENU = &H80000
Private Const GC_CLASSNAMEMSEXCELFORM = "ThunderDFrame"
Private Sub UserForm_Activate()
Dim hWndForm As Long
hWndForm = FindWindow(GC_CLASSNAMEMSEXCELFORM, Me.Caption)
If hWndForm  0 Then
SetWindowLong hWndForm, GWL_STYLE, GetWindowLong(hWndForm, GWL_STYLE) And Not  _
WS_SYSMENU
DrawMenuBar hWndForm
End If
End Sub
Wenn das Kreuz nur nicht anwählbar sein soll, dann nimm dieses Code:
Option Explicit
Private Declare Function DeleteMenu Lib "user32.dll" ( _
ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByVal bRevert As Long) As Long
Private Const GC_CLASSNAMEMSEXCELFORM = "ThunderDFrame"
Private Const MF_BYCOMMAND = &H0
Private Const SC_CLOSE = &HF060
Private Sub UserForm_Activate()
Dim hWndForm As Long, hWndMenu As Long
hWndForm = FindWindow(GC_CLASSNAMEMSEXCELFORM, Me.Caption)
If hWndForm  0 Then
hWndMenu = GetSystemMenu(hWndForm, 0&)
If hWndMenu  0 Then
DeleteMenu hWndMenu, SC_CLOSE, MF_BYCOMMAND
DrawMenuBar hWndForm
End If
End If
End Sub
Viele Grüße
Martin
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige