Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1156to1160
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
Inhaltsverzeichnis

Userform Titelleiste

Userform Titelleiste
Fatih
Hallo Leute,
ich hab aus einem Forum eine Excel-Beispieldatei runtergeladen wo es darum geht, die Titelleiste einer UF auszublenden.
Wenn ich die Datei öffne, funktioniert es einwandfrei und die Titelleiste ist weg.
Wenn ich aber den Code rauskopiere und eine neue Excel Datei eröffne inkl. einer Userform + Button, bekomm ich den Fehler. --> Variable nicht definiert und die Zeile "Userform_Initialize wird gelb markiert mit GWL_Style.
Was mach ich den da Falsch? Anbei der Code
Bitte um ein kurzes Feedback.
Vielen Dank
lg
fatih
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal _
hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private wHandle As Long
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
If Val(Application.Version) >= 9 Then
wHandle = FindWindow("ThunderDFrame", Me.Caption)
Else
wHandle = FindWindow("ThunderXFrame", Me.Caption)
End If
If wHandle = 0 Then Exit Sub
frm = GetWindowLong(wHandle, GWL_STYLE)
frm = frm Or &HC00000
SetWindowLong wHandle, -16, frmStyle
DrawMenuBar wHandle
End Sub

Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal _
Shift As Integer, ByVal X As Single, ByVal Y As Single)
If wHandle = 0 Then Exit Sub
If Button = 1 Then
ReleaseCapture
SendMessage wHandle, &HA1, 2, 0
End If
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Hab den Fehler
18.05.2010 13:58:58
Fatih
Hallo,
hab den Fehler schon gefunden. Tut mir leid das ich den Beitrag eröffnet habe.
Ursache war die Option Explicit-Anweisung
lg
fatih
Option Explicit
18.05.2010 14:11:36
Rudi
Hallo,
Option Explicit kann nie den Fehler verursachen.
Der Fehler ist die fehlende Deklaration von GWL_STYLE. Ich bezweifele, dass der Code ohne ordnungsgemäß funktioniert.
Gruß
Rudi
AW: Option Explicit
18.05.2010 14:21:32
Fatih
Lieber Rudi,
man kann ja im VBA-Editor unter Extras - Optionen - "Varibalendeklaration erforderlich" auswählen, bei mir war dieser aktiv, und bei jeder Prozedur ist dieser Eintrag "Option Explicit" automatisch dabei.
Ich habe einfach die Zeile gelöscht in meiner Mappe und mit F5 die Prozedur neugestartet, und es hat funktioniert.
lg
fatih
Anzeige
AW: Hab den Fehler
18.05.2010 14:14:29
Hajo_Zi
Hallo Fatih,
benutze den korrekten Code.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal _
hwnd As Long) As Long
Private Const GWL_STYLE As Long = -16
Private Const WS_SYSMENU As Long = &H80000
Private hWndForm As Long
Private bCloseBtn As Boolean
Private Sub UserForm_Initialize()
If Val(Application.Version) >= 9 Then
hWndForm = FindWindow("ThunderDFrame", Me.Caption)
Else
hWndForm = FindWindow("ThunderXFrame", Me.Caption)
End If
bCloseBtn = False
SetUserFormStyle
End Sub
Private Sub SetUserFormStyle()
Dim frmStyle As Long
If hWndForm = 0 Then Exit Sub
frmStyle = GetWindowLong(hWndForm, GWL_STYLE)
If bCloseBtn Then
frmStyle = frmStyle Or WS_SYSMENU
Else
frmStyle = frmStyle And Not WS_SYSMENU
End If
SetWindowLong hWndForm, GWL_STYLE, frmStyle
DrawMenuBar hWndForm
End Sub
Private Sub optCloseOn_Click()
bCloseBtn = True
cmdBeenden.Cancel = True
SetUserFormStyle
End Sub
Private Sub optCloseOff_Click()
bCloseBtn = False
cmdBeenden.Cancel = False
SetUserFormStyle
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
' gepostet von Heiner aus Herbers Forum


Anzeige
in die falsche Kiste gepackt
18.05.2010 14:23:14
Rudi
Hallo Hajo,
wo es darum geht, die Titelleiste einer UF auszublenden

Dein 'korrekter' Code blendet nur das Schließkreuz aus.
Gruß
Rudi
AW: Hab den Fehler
18.05.2010 14:26:25
Fatih
Lieber Hajo,
hab den Code jetzt 1:1 kopiert, die UF startet ganz normal mit Titelleiste aber ohne dem Fadenkreuz.
Wenn ich mich erinnere hab ich den Code was ich beim ersten Beitrag aufgegeben habe, von deiner Seite kann das sein?
lg
owT: Vielen Dank Lieber Hajo
18.05.2010 14:42:27
Fatih
owT

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige