Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
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

Userforms platzieren bei 2 Monitoren

Userforms platzieren bei 2 Monitoren
04.06.2015 10:50:29
Hendrik
Hallo zusammen,
ich habe zwei Bildschirme im Parallelbetrieb und das Problem, dass - unabhängig davon ob Excel rechts oder links im Vollbild läuft - neu angezeigte Userforms stets in der Mitte, also auf der Kante beider Bildschirme landen. Kann man das ändern/beeinflussen?
Danke und Grüße
Hendrik

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userforms platzieren bei 2 Monitoren
04.06.2015 11:25:55
Nepumuk
Hallo,
ändere mal in den Eigenschaften die Option StartUpPosition auf 1-Fenstermitte
Gruß
Nepumuk

AW: Userforms platzieren bei 2 Monitoren
04.06.2015 12:13:17
Nepumuk
Hallo,
das klappt auch nicht. Mist !!!
Ändere die StartUpPosition auf 0-Manuell und kopiere folgenden Code in das Modul des UserForms:
Private Sub UserForm_Initialize()
    With Application
        Left = .Left + .Width / 2 - Width / 2
        Top = .Top + .Height / 2 - Height / 2
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Userforms platzieren bei 2 Monitoren
08.06.2015 09:57:56
Hendrik
Danke für den Vorschlag, Nepumuk.
Jetzt ist der Dialog zwar auf dem gleichen Bildschirm wie die Excel-Instanz, aber noch immer nicht in dessen Mitte. Er hängt direkt am Rand zum zweiten Bildschirm.
Grüße

AW: Userforms platzieren bei 2 Monitoren
08.06.2015 10:11:55
Nepumuk
Hallo,
hast du Excel auf zwei Bildschirme verteilt?
Gruß
Nepumuk

AW: Userforms platzieren bei 2 Monitoren
08.06.2015 12:26:43
Hendrik
Nö. Wenn ich Excel beispielsweise im Vollbild rechts habe, dann erscheinen Dialogboxen standardmäßig am rechten Rand des linken Monitors. Durch Deine Codezeilen sind sie jetzt am linken Rand des rechten Monitors. Aber am liebsten wäre mir die Mitte des rechten Monitors. :)

Anzeige
AW: Userforms platzieren bei 2 Monitoren
08.06.2015 12:34:06
Nepumuk
Hallo,
dann teste mal folgendes.
In einem Standardmodul:
Option Explicit

Private Declare Function EnumDisplayMonitors Lib "user32.dll" ( _
    ByVal hdc As Long, _
    ByRef lprcClip As Any, _
    ByVal lpfnEnum As Long, _
    ByVal dwData As Long) As Long
Private Declare Function GetMonitorInfoA Lib "user32.dll" ( _
    ByVal hMonitor As Long, _
    ByRef lpmi As MONITORINFO) As Long
Private Declare Function MonitorFromWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal dwFlags As Long) As Long

Private Type RECT
    lngLeft As Long
    lngTop As Long
    lngRight As Long
    lngBottom As Long
End Type

Private Type MONITORINFO
    cbSize As Long
    rcMonitor As RECT
    rcWork As RECT
    dwFlags As Long
End Type

Private Const MONITOR_DEFAULTTONEAREST = &H2

Private ludtRect As RECT

Public Sub MoveUserform(ByRef probjUserform As Object)
    Dim udtDeleteRect As RECT
    Call EnumDisplayMonitors(ByVal 0&, ByVal 0&, AddressOf Read_Monitor, ByVal 0&)
    With probjUserform
        Call .Move((ludtRect.lngLeft - (ludtRect.lngRight) * -1) * 0.75 / 2 - .Width / 2 _
            , ludtRect.lngBottom * 0.75 / 2 - .Height / 2)
    End With
End Sub

Private Function Read_Monitor( _
        ByVal pvlngMonitor As Long, _
        ByVal pvlngHdcMonitor As Long, _
        ByRef prudtlprcMonitor As RECT, _
        ByVal pvlngdwData As Long) As Long

    Dim udtMonitorInfo As MONITORINFO
    udtMonitorInfo.cbSize = Len(udtMonitorInfo)
    Call GetMonitorInfoA(pvlngMonitor, udtMonitorInfo)
    If MonitorFromWindow(Application.hwnd, MONITOR_DEFAULTTONEAREST) = pvlngMonitor Then
        ludtRect = udtMonitorInfo.rcWork
        Read_Monitor = 0
    Else
        Read_Monitor = 1
    End If
End Function

Im Modul des UserForms:
Private Sub UserForm_Initialize()
    Call MoveUserform(Me)
End Sub

Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige