Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UserForm fixieren!

UserForm fixieren!
10.05.2005 15:17:09
Holger
Hallo zusammen,
ich habe eine Userform an eine bestimmte Position gesetzt. Heisst Left und Top sind fix. Wie kann ich es jetzt noch hinbiegen, das die Userform mit der Mous nicht verschoben werden kann?
MfG
Holger Wächter
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: UserForm fixieren!
10.05.2005 15:53:47
Galenzo
z.B. indem du die Titelleiste wegblendest:

--- in ein Modul ----
Option Explicit
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Long) As Long
Declare Function DrawMenuBar Lib "user32" (ByVal _
hwnd As Long) As Long
Const GWL_STYLE As Long = -16
Const WS_CAPTION As Long = &HC00000
Public hWndForm As Long
Public bCaption As Boolean
Sub SetUserFormStyle()
Dim frmStyle As Long
If hWndForm = 0 Then Exit Sub
frmStyle = GetWindowLong(hWndForm, GWL_STYLE)
If bCaption Then
frmStyle = frmStyle Or WS_CAPTION
Else
frmStyle = frmStyle And Not WS_CAPTION
End If
SetWindowLong hWndForm, GWL_STYLE, frmStyle
DrawMenuBar hWndForm
End Sub
--- in das Userform-Modul ------

Private Sub UserForm_Initialize()
If Val(Application.Version) >= 9 Then
hWndForm = FindWindow("ThunderDFrame", Me.Caption)
Else
hWndForm = FindWindow("ThunderXFrame", Me.Caption)
End If
bCaption = False
SetUserFormStyle
End Sub


Viel Erfolg!
Anzeige
AW: UserForm fixieren!
10.05.2005 15:56:46
Holger
Danke,
werde ich dann mal ausprobieren Eine andere (einfachere) Lösung gibt es da nicht?
AW: UserForm fixieren!
10.05.2005 16:01:54
Herbert
Hi,
in jedem Fall sind API-Calls erforderlich, das ist immer mit einem gewissen Aufwand verbunden. Leider haben sich viele API-Spezies aus dem Forum verabschiedet.
mfg Herbert
AW: UserForm fixieren!
10.05.2005 16:15:54
Holger
Alles klar,
dann nehme ich mal die Loesung von eben. Die war ja schon gut.
MfG
Holger Waechter
Anzeige
AW: UserForm fixieren!
11.05.2005 12:24:13
Mario
Hallo Holger
habe ein ähnliches Problem so gelöst, das ich eine Userform so groß gemacht habe, das sie den gesamten Bildschirm ausfüllt.
In den Eigenschaften hab ich Left auf 0 und Top auf -28,5 gesetzt.
Somit gibt es keine Möglichkeit, die Userform zu verschieben.
gruss M.Bacher
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm in Excel fixieren


Schritt-für-Schritt-Anleitung

Um eine UserForm in Excel zu fixieren, sodass sie nicht verschoben werden kann, kannst du die Titelleiste der UserForm ausblenden. Dies geschieht durch den Einsatz von Windows API-Funktionen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "Module" klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Declare Function FindWindow Lib "user32" Alias _
         "FindWindowA" (ByVal lpClassName As String, ByVal _
         lpWindowName As String) As Long
    Declare Function GetWindowLong Lib "user32" Alias _
         "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
         As Long) As Long
    Declare Function SetWindowLong Lib "user32" Alias _
         "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
         As Long, ByVal dwNewLong As Long) As Long
    Declare Function DrawMenuBar Lib "user32" (ByVal _
         hwnd As Long) As Long
    Const GWL_STYLE As Long = -16
    Const WS_CAPTION As Long = &H800000
    Public hWndForm As Long
    Public bCaption As Boolean
    
    Sub SetUserFormStyle()
       Dim frmStyle As Long
       If hWndForm = 0 Then Exit Sub
       frmStyle = GetWindowLong(hWndForm, GWL_STYLE)
       If bCaption Then
           frmStyle = frmStyle Or WS_CAPTION
       Else
           frmStyle = frmStyle And Not WS_CAPTION
       End If
       SetWindowLong hWndForm, GWL_STYLE, frmStyle
       DrawMenuBar hWndForm
    End Sub
  4. Füge nun den folgenden Code in das UserForm-Modul ein:

    Private Sub UserForm_Initialize()
       If Val(Application.Version) >= 9 Then
           hWndForm = FindWindow("ThunderDFrame", Me.Caption)
       Else
           hWndForm = FindWindow("ThunderXFrame", Me.Caption)
       End If
       bCaption = False
       SetUserFormStyle
    End Sub
  5. Schließe den VBA-Editor und teste deine UserForm. Die Titelleiste sollte nun verschwunden sein, und die UserForm kann nicht mehr verschoben werden.


Häufige Fehler und Lösungen

  • Fehler: Die UserForm wird nicht korrekt angezeigt.

    • Lösung: Stelle sicher, dass der Code in das richtige Modul eingefügt wurde und dass die UserForm korrekt initialisiert wird.
  • Fehler: Die UserForm kann zwar nicht verschoben werden, aber das Layout sieht nicht gut aus.

    • Lösung: Überprüfe die Größe und Position der UserForm. In den Eigenschaften kannst du die Größe so anpassen, dass sie den gewünschten Bereich abdeckt.

Alternative Methoden

Eine einfachere Möglichkeit, um eine UserForm in Excel zu fixieren, besteht darin, die Größe der UserForm so zu ändern, dass sie den gesamten Bildschirm ausfüllt. Setze die Eigenschaften wie folgt:

  • Left: 0
  • Top: -28,5
  • Width: Bildschirmbreite
  • Height: Bildschirmhöhe

Diese Methode sorgt dafür, dass die UserForm den gesamten Bildschirm ausfüllt und somit nicht mehr verschoben werden kann.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine UserForm fixieren kannst:

  1. Erstelle eine UserForm mit dem Namen "UserForm1".
  2. Füge den Code aus der Schritt-für-Schritt-Anleitung hinzu.
  3. Teste die UserForm und stelle sicher, dass sie die gewünschten Eigenschaften hat.

Tipps für Profis

  • Verwende API-Calls: Wenn du tiefer in die Programmierung einsteigen möchtest, kannst du auch andere API-Funktionen erkunden, um die Benutzeroberfläche weiter anzupassen.
  • Optimiere die UserForm: Denke daran, dass eine gut gestaltete UserForm die Benutzerfreundlichkeit erhöht. Achte auf Farben, Schriftarten und Layout.

FAQ: Häufige Fragen

1. Kann ich die UserForm trotzdem schließen, wenn die Titelleiste entfernt wurde?
Ja, du kannst einen Schließen-Button in die UserForm einfügen, um die UserForm zu schließen.

2. Funktioniert dies in allen Excel-Versionen?
Die beschriebenen Methoden funktionieren in den meisten neueren Excel-Versionen, insbesondere in Excel ab Version 2000. Achte darauf, dass du den richtigen Code für deine Excel-Version verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige