Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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 ohne Titelleiste

Userform ohne Titelleiste
28.01.2019 18:21:31
philipp
Guten Abend,
ich habe eine Datei gefunden (ausForum), da wird die UF ohne
Rahmen dargestellt.
Nun weiß ich nicht, was ich ändern muss um die UF in die Richtige
Position zu bringen.
Ich möchte gern das die UF genau passend in meine Zeile1 eingepaßt
wird und sich dann nicht verschiebt.
Anbei das Makro, welches dazu gehört.
mfg
philipp
Option Explicit
' Userform mit einem CommandButton (CoEnde), um die Userform
' zu schließen. Mit rechtsklick auf die Maus in der Userform
' wird diese ebenfalls geschlossen. Abschnitt:
' UserForm_MouseDown zum Schließen, dieser Teil ist auskommentiert
' von GraFri
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As _
Long, lpRect As RECT) As Long
Private Declare Function ReleaseCapture Lib "user32" () 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 CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, _
ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private FensterRegion&, Region&
Private Hauptfensternummer&, Clientfensternummer&
Private dummy As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const GW_CHILD = 5
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub UserForm_Initialize()
Call FensterOhneKopf
End Sub
Sub FensterOhneKopf()
Dim Abmessung As RECT
Dim Abmessung1 As RECT
Dim Pos1x&, Pos1y&, Pos2x&, Pos2y&
If FensterRegion 0 Then Exit Sub
UserForm1.BorderStyle = fmBorderStyleSingle
Call Fensternummer(UserForm1, Abmessung, Abmessung1)
Pos1x = 0
Pos1y = (Abmessung1.Top - Abmessung.Top)
Pos2x = Abmessung.Right - Abmessung.Left
Pos2y = Abmessung.Bottom - Abmessung.Top
Region = CreateRectRgn(Pos1x, Pos1y, Pos2x, Pos2y)
FensterRegion = SetWindowRgn(Hauptfensternummer, Region, True)
End Sub 'Fensterhandles und Infos über Fenster holen
Private Sub Fensternummer(Form As Object, Abmessung As RECT, Abmessung1 As RECT)
Dim Fenstername$, Suchstring$
Suchstring = "UserForm ohne Titelzeile"
Fenstername = Form.Caption
Form.Caption = Suchstring
Hauptfensternummer = FindWindow(vbNullString, Suchstring)
Form.Caption = Fenstername
Clientfensternummer = GetWindow(Hauptfensternummer, GW_CHILD)
dummy = GetWindowRect(Hauptfensternummer, Abmessung)
dummy = GetWindowRect(Clientfensternummer, Abmessung1)
End Sub
'Folgendes ist notwendig, um die Form ohne Titelleiste zu verschieben
'

Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
'ByVal X As Single, ByVal Y As Single)
'    If Button = 1 Then
'        If Hauptfensternummer  0 Then
'            dummy = ReleaseCapture()
'            dummy = SendMessage(Hauptfensternummer, WM_NCLBUTTONDOWN, HTCAPTION, 0)
'        End If
'    Else
'        Unload UserForm1 ' zum Schließen, beim Ausprobieren.
'    End If
'End Sub

Private Sub CoEnde_Click()
Unload Me
End Sub

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform ohne Titelleiste, hab übersehen
28.01.2019 18:38:00
philipp
Hallo zusammen,
habe übersehen, das letzte Makro ist für das Festnageln.
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
'ByVal X As Single, ByVal Y As Single)
'    If Button = 1 Then
'        If Hauptfensternummer  0 Then
'            dummy = ReleaseCapture()
'            dummy = SendMessage(Hauptfensternummer, WM_NCLBUTTONDOWN, HTCAPTION, 0)
'        End If
'    Else
'        Unload UserForm1 ' zum Schließen, beim Ausprobieren.
'    End If
'End Sub

Aber wo kann ich jetzt einstellen, damit die UF direkt neben der Zeile 1 und Spalte A
positioniert wird also direkt in der Ecke.
gruß philipp
Anzeige
Ich habs aber die Auflösung...
28.01.2019 18:51:07
philipp
Hallo zusammen,
so habe ich eingesetzt:
With UserForm1
.StartUpPosition = 0
.Top = 124
.Left = 20
End With
Funktioniert bei Aflösung: 1920X1200 in Excel 2007
Aber das Problem, bei der Auflösung 1920x1080 auch Excel 2007
beim anderen PC nicht, da ist die UF genau über die ABC Beschriftungsleiste.
gruß philipp
AW: Userform ohne Titelleiste, hab übersehen
28.01.2019 19:21:31
Nepumuk
Hallo Philipp,
teste mal:
Option Explicit

Private Declare Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLongA Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32.dll" ( _
    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 Declare Function SendMessageA Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByRef lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32.dll" () As Long
Private Declare Function MoveWindow Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long) As Long
Private Declare Function IsThemeActive Lib "uxtheme.dll" () As Long

Private Const GC_CLASSNAMEMSUSERFORM As String = "ThunderDFrame"
Private Const GWL_STYLE As Long = -16&
Private Const WS_CAPTION As Long = &HC00000
Private Const HTCAPTION As Long = 2&
Private Const WM_NCLBUTTONDOWN As Long = &HA1
Private Const POINT_TO_PIXEL As Double = 0.75

Private mlngHwndForm As Long

Private Sub CommandButton1_Click()
    Call Unload(Object:=Me)
End Sub

Private Sub UserForm_Initialize()
    Dim lngStyle As Long
    mlngHwndForm = FindWindowA(GC_CLASSNAMEMSUSERFORM, Caption)
    lngStyle = GetWindowLongA(mlngHwndForm, GWL_STYLE)
    lngStyle = lngStyle And Not WS_CAPTION
    Call SetWindowLongA(mlngHwndForm, GWL_STYLE, lngStyle)
    Call DrawMenuBar(mlngHwndForm)
    If IsThemeActive = 1 Then
        Height = Height - 16
    Else
        Height = Height - 14
    End If
End Sub

Private Sub UserForm_Layout()
    Dim lngLeft As Long, lngTop As Long
    With ActiveSheet.Cells(1, 1)
        lngLeft = ActiveWindow.PointsToScreenPixelsX(.Left / POINT_TO_PIXEL)
        lngTop = ActiveWindow.PointsToScreenPixelsY(.Top / POINT_TO_PIXEL)
    End With
    Call MoveWindow(mlngHwndForm, lngLeft, lngTop, _
        Width / POINT_TO_PIXEL, Height / POINT_TO_PIXEL, 1)
End Sub

Private Sub UserForm_MouseDown(ByVal Button As Integer, _
        ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    If Button = 1 Then
        Call ReleaseCapture
        Call SendMessageA(mlngHwndForm, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End If
End Sub

Gruß
Nepumuk
Anzeige
Leider nichts angezeigt
28.01.2019 19:38:44
philipp
Hallo Nepumuk,
habe kompl. deine Makros in die UF reinkopiert.
Leider sehe ich keine UF und ich kann auch die Tabelle nicht schließen.
mfg
philipp
Sorry aber ich sehe nicht die UF
28.01.2019 19:50:48
philipp
Hallo Nepumuk,
habe deine Datei geladen, sehe aber keine UF !!!
Habe hier mit F8 gestartet: Private Sub UserForm_Initialize()
Was ist den Falsch bei mir ?
gruß philipp
Habe jetzt...
28.01.2019 19:55:00
philipp
Hallo Nepumuk,
habe jetzt das VB Projekt klein gemacht, sobald ich mit F8 starte sehe ich links die
UF, gehe ich darauf ist diese weg !
Und ich kann nichts betätigen.
gruß
philipp
Anzeige
AW: Habe jetzt...
28.01.2019 19:58:06
Nepumuk
Hallo Philipp,
bei mir (Excel 2013) funktioniert das ohne Probleme. Ich lass die Frage mal offen.
Gruß
Nepumuk
AW: Habe jetzt...
28.01.2019 19:58:53
philipp
Hallo,
habe jetzt rausgenommen:
'

Private Sub UserForm_MouseDown(ByVal Button As Integer, _
'    ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'    If Button = 1 Then
'       Call ReleaseCapture
'      Call SendMessageA(mlngHwndForm, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
'   End If
'End Sub
sehe UF kann aber in Tabelle nicht arbeiten.
gruß philipp
AW: Habe jetzt...
28.01.2019 20:02:14
Nepumuk
Hallo Philipp,
setze die ShowModal-Eigenschaft des Userforms auf False.
Und gib bitte beim nächsten mal etwas umfangreichere Informationen oder lade eine Mustermappe hoch.
Gruß
Nepumuk
Anzeige
Habe ich gemacht, leider ...
28.01.2019 20:10:32
philipp
Hallo Nepumuk,
wenn ich jetzt mit F8 im VB Makro starte, geht sofort in Tabelle
aber keine UF ?
Ich habe ja 2007.
Kann auch nicht von Tabelle aus starten !
gruß philipp
Habe ich gemacht, leider ...
28.01.2019 20:10:34
philipp
Hallo Nepumuk,
wenn ich jetzt mit F8 im VB Makro starte, geht sofort in Tabelle
aber keine UF ?
Ich habe ja 2007.
Kann auch nicht von Tabelle aus starten !
gruß philipp
AW: Habe ich gemacht, leider ...
28.01.2019 20:12:11
Nepumuk
Hallo Philipp,
mit F8 startest du die erste Codezeile. Versuch es mal mit F5.
Gruß
Nepumuk
Ja aber keine UF
28.01.2019 20:30:11
philipp
Hallo Nepumuk,
hab mit F5 gestartet, geht zur Tabelle aber keine UF, aber kann Zellen anklicken.
Habe commandbutton auf Tabelle erstellt;
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
auch keine UF.
gruß philipp
Anzeige
AW: Ja aber keine UF
28.01.2019 20:41:24
Nepumuk
Hallo Philipp,
kann ich immer noch nicht nachvollziehen. Bei mir sieht das so aus:
Userbild
Ein letzter Versuch dann gebe ich auf: https://www.herber.de/bbs/user/127228.xlsm
Gruß
Nepumuk
Sorry Nepumuk
28.01.2019 20:51:55
philipp
Hallo,
Makro bleibt hier stehen:
With ActiveSheet.Cells(1, 1)
wenn ich mit F5 starte.
Von der Tabelle aus, keine Reaktion.
gruß
philipp
AW: Sorry Nepumuk
28.01.2019 20:58:05
Nepumuk
Hallo Philipp,
was heißt "bleibt stehen" ? Mit Fehlermeldung oder …?
Aber wie schon geschrieben, mehr als eine funktionierende Mappe kann ich nicht machen. Ich kapituliere.
Gruß
Nepumuk
Anzeige
AW: Sorry Nepumuk
28.01.2019 21:08:33
philipp
Hallo,
ja bleibt stehen.
Kann ich verstehen das Du genervt bist.
mfg
philipp
Neuer Versuch
29.01.2019 07:56:10
Nepumuk
Hallo Philipp,
kann es sein, dass in deiner Tabelle die Zelle A1 gar nicht sichtbar ist?
Versuch es mal damit:
Private Sub UserForm_Layout()
    Dim lngLeft As Long, lngTop As Long
    With ActiveWindow.VisibleRange.Cells(1, 1)
        lngLeft = ActiveWindow.PointsToScreenPixelsX(.Left / POINT_TO_PIXEL)
        lngTop = ActiveWindow.PointsToScreenPixelsY(.Top / POINT_TO_PIXEL)
    End With
    Call MoveWindow(mlngHwndForm, lngLeft, lngTop, _
        Width / POINT_TO_PIXEL, Height / POINT_TO_PIXEL, 1)
End Sub

Gegen einfach stehenbleiben im Code habe ich kein Rezept.
Gruß
Nepumuk
Anzeige
Danke Nepumuk !!! -)
29.01.2019 09:49:51
philipp
Guten Morgen Nepumuk,
herzlichen Dank für die große Hilfe !!!
Leider brachte das Makro auch nichts, ist jetzt egal, werde mir ein Textfeld
installieren.
schönen Tag noch philipp
AW: Danke Nepumuk !!! -)
29.01.2019 12:03:25
Mullit
Hallo,
ich erhalte den Fehler bei Start aus dem Editor(F5) auch, da scheint irgendwas bei Nepumuks TabBlatt in der Mappe korrupt zu sein, aus Sicht von xl2010 / xl2007 zumindest, der ActiveX-Button funktioniert da bei mir(xl2010) auch nicht, mit einem Formular-Button geht's und Cells(1,1) ohne ActiveSheet funktioniert.
Füg mal ein ein neues TabBlatt mit einem neuen ActiveX-Button und dem Form.Show-Aufruf ein, da gehts, läuft bei mir wie geschn. Brot...
@Nepumuk: Müsstest Du, wenn Du Zeit dafür hast...;-).. höchstens mal mit einer virt. Machine und xl2010 / xl2007 testen, da sollte der Fehler auch auftauchen...weiß der Teufel, warum...?!
Userbild
Gruß, Mullit
Anzeige
Hab getestet, leider auch keine UF zu sehen... -)
29.01.2019 11:48:28
philipp

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige