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 richtig platzieren

UserForm richtig platzieren
30.06.2005 18:15:15
Chris
hallo,
ich habe mittels der funktion GetSystemMetrics die Bildschirmauflösung ermittelt. Diese ist 1024x768. Nun will ich eine UserForm in das rechte obere Eck des Bildschirms platzieren. Wenn ich jedoch folgendes verwende:
userform1.left= ermittelte_bildschirmbreite - userform1.width
dann wird die userform erst gar nicht angezeigt. Das gleiche passiert auch wenn ich den Wert in die Eigenschaften der userform eintrage. Rechne ich jedoch mit einer Breite von 768 statt 1024 dann passts genau. Wie kommt das?
Wie ich das Ding dann rechts unten platzieren soll ist mir gäntzlich ein Rätsel, da hier gar kein Wert für die Bildschirmhöhe passt.
Bin für jede Hilfe dankbar.
gruß
chris
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm richtig platzieren
30.06.2005 19:28:25
Kolloge
Schau Dir mal die Werte von .Height und .width an
With Startseite
.Height = Application.Height
.Width = Application.Width
.Start
.Show
End With
AW: UserForm richtig platzieren
30.06.2005 19:42:04
chris
komisch, die Werte sind:
application.width=774
application.height=542,25
Wieso ist das so? Sind das vielleicht keine Pixel?
Anzeige
AW: UserForm richtig platzieren
30.06.2005 19:30:23
micha
Hallo Chris,
so sollte es gehen
UserForm1.Left = Application.ActiveWindow.Width - UserForm1.Width
Micha
AW: UserForm richtig platzieren
30.06.2005 19:39:36
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
Anzeige
gra.fri@aon.at
30.06.2005 19:57:49
GraFri
Hallo
Vielleicht hilft dir folgender Code weiter.


      
' -----------------------------------------------------
Option Explicit
'Rechte obere Ecke des Bildschirms, 350x450 Pixel groß

Private Sub UserForm_Activate()
Dim BildschirmBreite&
Dim BildschirmHöhe&
Dim UserformBreite&
Dim UserformHöhe&
Dim wHandle&
    
    BildschirmBreite = GetSystemMetrics(SM_CXSCREEN)
    BildschirmHöhe = GetSystemMetrics(SM_CYSCREEN)
    
    UserformBreite = 350
    UserformHöhe = 450
    wHandle = FindWindow(vbNullString, Me.Caption)
    MoveWindow wHandle, BildschirmBreite - UserformBreite, _
       0, UserformBreite, UserformHöhe, 1
End Sub
' -----------------------------------------------------

' -----------------------------------------------------
' Modul
Option Explicit
'Bildschirmauflösung
Declare Function GetSystemMetrics Lib _
   "user32" (
ByVal nIndex As LongAs Long
Public Const SM_CYSCREEN As Long = 1
Public Const SM_CXSCREEN As Long = 0
'Position
Declare Function FindWindow Lib "user32" Alias _
      "FindWindowA" (
ByVal lpClassName As StringByVal _
      lpWindowName 
As StringAs Long
mfg, GraFri
Anzeige
AW: gra.fri@aon.at
30.06.2005 20:24:20
chris
Was macht das?
Für was sind die "&" am Ende der Variablen?
Mich würd jetzt aber schon interessieren warum ich für
application.width (774) und
application.height (542,25)
so komisch werte bekomme.
AW: gra.fri@aon.at
30.06.2005 21:38:18
Nepumuk
Hi,
1. Das & ist das Typenkennzeichen für den Long - Datentyp.
2. Du bekommst Points als Rückgabewert.
Steht alles in der Hilfe!!!
Gruß
Nepumuk
Anzeige
AW: gra.fri@aon.at
30.06.2005 21:43:31
chris
ich finde leider in keiner Hilfe welchen wert ich bei Abfrage dieser Eigenschaft zurückbekomme. Dann wird ja die Höhe und die Breite einer Userform auch in Points angegeben. Wie kann ich von Point nach Pixel umrechnen?
AW: gra.fri@aon.at
30.06.2005 22:12:09
Nepumuk
Hi,
1. Markiere das Wort Width mit der Maus und drück auf F1.
2. Nicht so ganz einfach. Lies mal das: http://hsivonen.iki.fi/units/
Gruß
Nepumuk
Anzeige
AW: gra.fri@aon.at
01.07.2005 17:54:44
chris
hab das nun mal ausprobiert und es funktioniert super. DANKE.
Was ich allerdings immer noch nicht verstehe ist der Wert, den ich bei userform.width oder userform.height bekomme.
AW: UserForm richtig platzieren
30.06.2005 19:39:41
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
Anzeige
AW: UserForm richtig platzieren
30.06.2005 19:39:45
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
AW: UserForm richtig platzieren
30.06.2005 19:39:51
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
Anzeige
AW: UserForm richtig platzieren
30.06.2005 19:39:51
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
AW: UserForm richtig platzieren
30.06.2005 19:39:57
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
Anzeige
AW: UserForm richtig platzieren
30.06.2005 19:39:58
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
AW: UserForm richtig platzieren
30.06.2005 19:39:59
chris
Dies funktioniert aber nur wenn Excel auf den ganzen Bildschirm maximiert ist. Ich wollte die userform jedoch unabhängig von dem Excelfenster rechts oben im Bildschirm platzieren.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm richtig platzieren in Excel


Schritt-für-Schritt-Anleitung

Um eine UserForm in Excel richtig zu platzieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermittelt die Bildschirmauflösung und positioniert die UserForm in der rechten oberen Ecke des Bildschirms:

Option Explicit

Private Sub UserForm_Activate()
    Dim BildschirmBreite As Long
    Dim BildschirmHöhe As Long
    Dim UserformBreite As Long
    Dim UserformHöhe As Long
    Dim wHandle As Long

    BildschirmBreite = GetSystemMetrics(SM_CXSCREEN)
    BildschirmHöhe = GetSystemMetrics(SM_CYSCREEN)

    UserformBreite = 350
    UserformHöhe = 450
    wHandle = FindWindow(vbNullString, Me.Caption)

    MoveWindow wHandle, BildschirmBreite - UserformBreite, 0, UserformBreite, UserformHöhe, 1
End Sub

Um diesen Code zu verwenden, musst Du sicherstellen, dass Du die GetSystemMetrics-Funktion korrekt deklarierst. Platziere den Code in das Modul Deiner UserForm.


Häufige Fehler und Lösungen

  1. UserForm wird nicht angezeigt: Wenn die UserForm nicht erscheint, überprüfe die Berechnungen für Left und Top. Stelle sicher, dass Du die richtige Bildschirmbreite und -höhe verwendest.

  2. Falsche Werte für Application.Width und Application.Height: Diese Werte können in Points zurückgegeben werden, was zu Verwirrung führen kann. Du solltest die Konvertierung von Points zu Pixeln in Betracht ziehen.

  3. Unabhängige Positionierung: Wenn die UserForm nur angezeigt wird, wenn Excel maximiert ist, stelle sicher, dass Du die Bildschirmbreite und -höhe verwendest, anstatt die Werte von Application.


Alternative Methoden

Eine alternative Methode zur Platzierung der UserForm ist die Verwendung von Windows-API-Funktionen. Hier ist ein Beispiel, das die MoveWindow-Funktion verwendet:

Declare Function MoveWindow Lib "user32" (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

Diese Methode erlaubt eine präzisere Kontrolle über die Positionierung, insbesondere wenn die Excel-Anwendung nicht im Vollbildmodus ist.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung der oben genannten Methoden:

Beispiel 1: UserForm in der rechten oberen Ecke:

UserForm1.Left = GetSystemMetrics(SM_CXSCREEN) - UserForm1.Width
UserForm1.Top = 0
UserForm1.Show

Beispiel 2: UserForm in der Mitte des Bildschirms:

UserForm1.Left = (GetSystemMetrics(SM_CXSCREEN) - UserForm1.Width) / 2
UserForm1.Top = (GetSystemMetrics(SM_CYSCREEN) - UserForm1.Height) / 2
UserForm1.Show

Tipps für Profis

  • Verwende Application.WindowState: Um sicherzustellen, dass Du die richtige Bildschirmgröße erhältst, kannst Du den Status des Excel-Fensters überprüfen. Dies hilft, die UserForm auch bei unterschiedlichen Fenstergrößen korrekt zu platzieren.

  • Debugging: Wenn Du mit der Positionierung Probleme hast, füge Debugging-Ausgaben in Deinen Code ein, um die Werte von Left und Top zu überprüfen.

  • User-Feedback: Überlege, eine Möglichkeit zur Benutzerrückmeldung zu integrieren, wenn die UserForm aufgrund von Bildschirmauflösungen nicht korrekt angezeigt werden kann.


FAQ: Häufige Fragen

1. Wie konvertiere ich Points in Pixel? Um von Points zu Pixeln umzurechnen, kannst Du die DPI (Dots Per Inch) Deines Bildschirms berücksichtigen. Eine gängige Umrechnung ist 1 Point = 1/72 Inch.

2. Was ist der Unterschied zwischen Application.Width und GetSystemMetrics(SM_CXSCREEN)? Application.Width bezieht sich auf die aktuelle Größe des Excel-Anwendungsfensters, während GetSystemMetrics(SM_CXSCREEN) die gesamte Breite des Bildschirms zurückgibt, unabhängig von der Fenstergröße.

3. Warum erscheinen die Werte von Application.Width und Application.Height seltsam? Diese Werte können in Points zurückgegeben werden, was möglicherweise nicht direkt mit der Bildschirmauflösung übereinstimmt. Überprüfe die Einheit und konvertiere sie gegebenenfalls in Pixel.

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