Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm verschieben unterdrücken?!

Forumthread: UserForm verschieben unterdrücken?!

UserForm verschieben unterdrücken?!
19.02.2004 11:36:27
Andre
Hi, kann ich irgendwie verhindern, dass sich eine Userform verschieben läßt, oder kann ich die Userform in Vollbild aufrufen, dass ein Verschieben nicht mehr zuläßt?
Die Benutzer sollen die Userform nicht einfach aus dem Bild schieben können, damit die Start-Userform immer einheitlich aussieht und das Tabellenblatt darunter nicht sichtbar ist!
Weiß jemand ob das überhaupt möglich ist und wenn ja vielleicht noch ´n kleinen Tip wie? Danke schonmal!

Gruß Andre
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm verschieben unterdrücken?!
19.02.2004 11:38:22
Hajo_Zi
Hallo Andre
schaue mal auf meine Homepage da ist ein Beispiel, auf der Seite Fremde Dateien
Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
AW: UserForm verschieben unterdrücken?!
19.02.2004 11:43:20
Jan P
Hallo Andre,
keine direkte Hilfe aber vielleicht ein Ansatz:
Du kannst die Excel-Arbeitsmappe ausblenden, so daß auch beim Verschieben der UserForm die Mappe dahinter "unsichtbar" ist:

Private Sub UserForm_Initialize()
' Ausblenden der EXCEL-Arbeitsmappe
Application.Visible = False ' oder mit = True zum Einblenden
Vollbild der UserForm:
' Darstellung im Vollbild-Modus
Application.DisplayFullScreen = True
' UserForm der Größe des Excel-Fensters anpassen
With INVOICING
.Height = Application.Height
.Width = Application.Width
End With
UserForm nicht zu schließen:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Geht nicht." , vbInformation
Cancel = True
End If
End Sub

Mehr weiß ich zur zeit nicht...
Gruß Jan
Anzeige
AW: UserForm verschieben unterdrücken?!
19.02.2004 11:45:10
Galenzo
Hallo,
schreibe diesen Code in das Modul der Userform:


Option Explicit
Private Declare Function FindWindow Lib "user32" Alias _
      "FindWindowA" (ByVal lpClassName As StringByVal _
      lpWindowName As StringAs Long
Private Declare Function GetWindowLong Lib "user32" Alias _
      "GetWindowLongA" (ByVal hwnd As LongByVal nIndex _
      As LongAs Long
Private Declare Function SetWindowLong Lib "user32" Alias _
      "SetWindowLongA" (ByVal hwnd As LongByVal nIndex _
      As LongByVal dwNewLong As LongAs Long
Private Const GWL_STYLE As Long = -16

Private Sub UserForm_Initialize()
    Dim hWndForm As Long
    Dim frmStyle As Long
    Dim bCaption As Boolean
    If Val(Application.Version) >= 9 Then
        hWndForm = FindWindow("ThunderDFrame", Me.Caption)
    Else
        hWndForm = FindWindow("ThunderXFrame", Me.Caption)
    End If
    frmStyle = GetWindowLong(hWndForm, GWL_STYLE)
    SetWindowLong hWndForm, GWL_STYLE, frmStyle
Damit läßt sie sich nicht mehr verschieben.
mfg
Anzeige
AW: UserForm verschieben unterdrücken?!
19.02.2004 12:02:13
Jan P
Hallo,
habe versucht, das alles zu übernehmen...
Leider läßt sich das Fenster mit der UserForm nach wie vor verschieben...
Eine Fehlermeldung gibt es nicht...
MfG Jan
Leider nicht.
19.02.2004 12:30:37
Andre
Ich komme zum selben Ergebnis wie Jan, keine Fehlermeldung zwar, aber auch kein sichtbarer Effekt. Die Userform läßt sich immer noch verschieben.
Gruß Andre
Anzeige
AW: Alternative....
19.02.2004 12:36:06
Jan P
Option Explicit

Private Sub UserForm_Layout()
'   Von Bert Körn
' http://www.forum.excelabc.de/
Me.Move Application.Width / 2 - Me.Width / 2, Application.Height / 2 - Me.Height / 2
End Sub

das geht bei mir....
Anzeige
Genau, hab ich auch grad von Hajo´s Page!
19.02.2004 12:42:44
Andre
Danke Hajo! Funktioniert, wie lautet noch mal der Befehl, um den Bildschirm nicht mitlaufen zu lassen, d.h. ich möchte das Flackern nicht sehen!
Gruß Andre
AW: Genau, hab ich auch grad von Hajo´s Page!
19.02.2004 12:44:59
Hajo_Zi
Hallo Andre
Bildschirmaktualsierung, Makro laufen lassen ohne Anzeige
damit die Ausführung des Makros nicht angezeigt wird, kann man vor den Code schreiben
application.screenupdating = False im Hintergrund ohne Anzeige
Man darf dann nur nicht vergessen, dieses wieder auf True zu setzen.
Generell sollte man aber alles mit Activate und Select vermeiden
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
Ach ja, so war das, aber leider ...
19.02.2004 12:54:16
Andre
... funktioniert das nicht mit deinem Beispiel für die Userform, denn das Flackern kann man immer noch sehen.
Hast du vielleicht noch ´ne Idee wie ich das Flackern unsichbar machen kann?
mfg Andre
AW: Ach ja, so war das, aber leider ...
19.02.2004 12:56:36
Hajo_Zi
Hallo Andre
Generell sollte man aber alles mit Activate und Select vermeiden

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
AW: Ach ja, so war das, aber leider ...
19.02.2004 13:03:00
Andre
Sorry, ich bin dir ausgesprochen dankbar für deine Hilfe, aber ich hab im Moment keinen Schimmer wie ich diese beiden Informationen mit deinem Beispiel der Userform verknüpfen kann! Daher meine Frage.
Könntest da mir vielleicht ´n konkretes Beispiel geben? Wäre sehr nett.
Gruß Andre
AW: Ach ja, so war das, aber leider ...
19.02.2004 13:11:27
Hajo_Zi
Hallo Andre
Da kann ich Dir nicht helfen. In meinem Beispiel wird nichts selktiert und auch nicht Activiert, darum flakkert der Bildschirm auch nicht.

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
Wie jetzt?
19.02.2004 13:18:00
Andre
Bei dir flackert die Userform nicht, wenn man versucht sie mit der Maus festzuhalten und zu verschieben?
Gruß Andre
AW: Wie jetzt?
19.02.2004 13:42:28
Hajo_Zi
Hallo Andre
Grundlage für eine genaue Beantwortung der Frage ist eine genaue Beschreibung des Fehlers. In keinmen Deiner Beiträge stand.
Bei dir flackert die Userform nicht, wenn man versucht sie mit der Maus festzuhalten und zu verschieben?
Dazu habe ich keine Lösung.

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
Okay, sorry, hatte mich da wohl ungenau geäußert!
19.02.2004 13:46:48
Andre
AW: Korrektur
19.02.2004 13:03:01
Galenzo
da ist irgendwas mit meinem Code schiefgelaufen.
Hab wohl beim reinkopieren etwas zuviel gelöscht:
Die vorletzte Zeile muß heißen:
frmStyle = (GetWindowLong(hWndForm, GWL_STYLE)) And Not &HC00000
nun sollte es gehn.
mfg
AW: Korrektur
19.02.2004 13:08:42
Andre
Danke, jetzt funktioniert´s, aber leider kann ich die Userform jetzt auch nicht mehr über "X" schließen. Kann man diese Funktion in deinem Beispiel trotzdem freigeben?
Gruß Andre
Anzeige
AW: "Cancel"-Button
19.02.2004 13:46:09
Galenzo
nee - brauchst ein separaten "Schließen"-Button mit der Anweisung
Unload Me
Okay, danke für deine Hilfe. o.T.
19.02.2004 13:48:00
Andre
;
Anzeige

Infobox / Tutorial

UserForm in Excel richtig konfigurieren


Schritt-für-Schritt-Anleitung

Um zu verhindern, dass sich eine UserForm in Excel verschieben lässt, kannst du den folgenden VBA-Code verwenden. Dieser Code stellt sicher, dass die UserForm im Vollbildmodus angezeigt wird und nicht verschoben werden kann.

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).

  2. Erstelle eine neue UserForm oder wähle eine bestehende aus.

  3. Füge den folgenden Code in das Code-Fenster der UserForm ein:

    Private Sub UserForm_Initialize()
       ' Vollbild der UserForm
       Application.DisplayFullScreen = True
       ' UserForm der Größe des Excel-Fensters anpassen
       With Me
           .Height = Application.Height
           .Width = Application.Width
       End With
    End Sub
    
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
       If CloseMode = vbFormControlMenu Then
           MsgBox "Geht nicht.", vbInformation
           Cancel = True
       End If
    End Sub
  4. Speichere die Änderungen und teste die UserForm.


Häufige Fehler und Lösungen

  • Problem: Die UserForm lässt sich immer noch verschieben.

    • Lösung: Stelle sicher, dass du den Code in das richtige Modul eingefügt hast. Überprüfe auch, ob der Code vollständig und korrekt ist.
  • Problem: Die UserForm kann nicht mehr über das "X" geschlossen werden.

    • Lösung: Füge einen separaten Schließen-Button hinzu, der die folgende Anweisung enthält:
    Unload Me

Alternative Methoden

Eine andere Möglichkeit, die UserForm zu positionieren und zu konfigurieren, besteht darin, die Bildschirmaktualisierung zu deaktivieren. Dies kann Flackern beim Anzeigen der UserForm vermeiden:

  1. Füge den folgenden Code vor dem Aufruf der UserForm ein:

    Application.ScreenUpdating = False
  2. Vergiss nicht, die Bildschirmaktualisierung wieder zu aktivieren:

    Application.ScreenUpdating = True

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die UserForm zentrieren und die Position fixieren kannst:

Private Sub UserForm_Layout()
    ' UserForm zentrieren
    Me.Move Application.Width / 2 - Me.Width / 2, Application.Height / 2 - Me.Height / 2
End Sub

Verwende diesen Code in Kombination mit dem vorherigen, um die UserForm optimal zu gestalten.


Tipps für Profis

  • Vermeide die Verwendung von Select und Activate, um Flackern zu reduzieren.
  • Nutze Application.ScreenUpdating = False, um die Benutzeroberfläche während der Makroausführung nicht zu aktualisieren.
  • Wenn du die UserForm in eine spezifische Excel-Version (z. B. Excel 2010 oder höher) integrieren möchtest, teste den Code gründlich, um sicherzustellen, dass er kompatibel ist.

FAQ: Häufige Fragen

1. Warum flackert meine UserForm, wenn ich sie versuche zu verschieben?
Das Flackern kann durch die Bildschirmaktualisierung verursacht werden. Stelle sicher, dass Application.ScreenUpdating auf False gesetzt ist, bevor du die UserForm anzeigst.

2. Kann ich die Größe der UserForm dynamisch anpassen?
Ja, du kannst die Größe der UserForm an die Größe des Excel-Fensters anpassen, indem du den entsprechenden Code in die UserForm_Initialize()-Subroutine einfügst, wie im Schritt-für-Schritt-Anleitung beschrieben.

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