Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erkennung welcher Bildschirm

Forumthread: Erkennung welcher Bildschirm

Erkennung welcher Bildschirm
22.01.2021 14:45:41
Ronald
Grüßt Euch alle
In den heutigen Zeiten arbeiten viele mit mehreren Bildschirmen und schieben sich die Programme
von einem zum anderen Bildschirm rüber, je nachdem, wie sie es grade brauchen.
Gibt es eine Möglichkeit, herauszufinden, auf welchem Bildschirm sich das Excel befindet, damit man
auch immer auf dem selben Bildschirm die jeweilige Userform (es gibt mehrere) jeweils zentriert
anzeigen lassen kann?
Bisher hatte ich mit dem Auslesen der aktuellen Position sowie dem Setzen der Wunschposition
der jeweiligen Userforms gearbeitet, aber ich finde das umständlich. Da gibt es sicher einen einfacheren
Weg. Vor allem, wenn man auch gar nicht weiß, auf welchem der Bildschirme sich das ExcelSheet
befindet.
Über Hilfe bzw. Hinweise, die mich in die richtige Richtung pushen, wäre ich sehr dankbar. Google
war leider nicht so ergiebig, weswegen ich bisher auch noch keinen eigenen Lösungsansatz habe.
Danke im Voraus.
Gruß Ronald
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erkennung welcher Bildschirm
22.01.2021 15:07:12
planlos
hallo
die apis MonitorFromWindow(auf welchen monitor ist die excel-app plaziert) und GetMonitorInfoW(was sind die ausprägungen des betreffenden monitors) könnten evtl. bei der berechnung der plazierung der userform helfen.
AW: Erkennung welcher Bildschirm
22.01.2021 15:13:21
Daniel
Hi
kannst du dich am Excelfenster orientieren?
so erscheint die Userform in der Mitte des Excelfensters:
1. in der Eigenschaftsliste StartUpPosition auf Manuell stellen
2. das im Initialize-Event der Userform.
die Form erscheint in der Mitte des Excelfensters.
Private Sub UserForm_Initialize()
Me.Top = ActiveWindow.Top + (ActiveWindow.Height - Me.Height) / 2
Me.Left = ActiveWindow.Left + (ActiveWindow.Width - Me.Width) / 2
End Sub
Gruß Daniel
Anzeige
AW: Erkennung welcher Bildschirm
22.01.2021 15:17:38
Ronald
Das klingt sehr gut und werde ich ausprobieren. Vielen Dank Euch beiden !!
Gruß Ronald
;
Anzeige
Anzeige

Infobox / Tutorial

Erkennung des Bildschirms in Excel bei mehreren Monitoren


Schritt-für-Schritt-Anleitung

Um herauszufinden, auf welchem Bildschirm sich Excel befindet, kannst du die folgenden Schritte in VBA umsetzen:

  1. Starte den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf das Projekt im Projekt-Explorer und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Private Declare PtrSafe Function MonitorFromWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal dwFlags As Long) As LongPtr
    Private Declare PtrSafe Function GetMonitorInfo Lib "user32" (ByVal hMonitor As LongPtr, lpmi As MONITORINFO) As Long
    
    Private Type MONITORINFO
       cbSize As Long
       rcMonitor As RECT
       rcWork As RECT
       dwFlags As Long
    End Type
    
    Private Type RECT
       Left As Long
       Top As Long
       Right As Long
       Bottom As Long
    End Type
    
    Sub GetActiveExcelMonitor()
       Dim hMonitor As LongPtr
       Dim mi As MONITORINFO
    
       hMonitor = MonitorFromWindow Application.hWnd, 0
       mi.cbSize = Len(mi)
    
       If GetMonitorInfo(hMonitor, mi) Then
           MsgBox "Excel ist auf Monitor: " & hMonitor
       End If
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle GetActiveExcelMonitor und klicke auf Ausführen.

Jetzt erhältst du eine Meldung, die dir anzeigt, auf welchem Monitor sich Excel befindet.


Häufige Fehler und Lösungen

  • Fehler: "Benutzerdefinierte Funktion konnte nicht ausgeführt werden"
    Lösung: Stelle sicher, dass du die richtigen API-Deklarationen verwendest. Die Verwendung von PtrSafe ist notwendig, wenn du Excel 64-Bit verwendest.

  • Fehler: "Keine Rückgabewerte"
    Lösung: Überprüfe, ob du die richtigen Berechtigungen hast, um auf Monitor-Informationen zuzugreifen. Manchmal kann es helfen, Excel mit Administratorrechten zu starten.


Alternative Methoden

Eine weitere Möglichkeit, die Position der Userform zu bestimmen, ist die Verwendung der StartUpPosition-Eigenschaft:

  1. Setze die StartUpPosition:

    • Wähle in der Eigenschaftsliste deiner Userform die Option Manuell.
  2. Positioniere die Userform im Initialize-Event:

    Private Sub UserForm_Initialize()
       Me.Top = ActiveWindow.Top + (ActiveWindow.Height - Me.Height) / 2
       Me.Left = ActiveWindow.Left + (ActiveWindow.Width - Me.Width) / 2
    End Sub

Diese Methode orientiert sich am aktuellen Excel-Fenster, was die Handhabung vereinfacht.


Praktische Beispiele

Wenn du beispielsweise eine Userform zentrieren möchtest, kannst du den UserForm_Initialize-Code verwenden. Dies sorgt dafür, dass die Userform immer in der Mitte des Excel-Fensters erscheint, egal auf welchem der Bildschirme sich Excel befindet.


Tipps für Profis

  • Nutze die API-Funktionen, um detaillierte Informationen über die Monitorauflösungen zu erhalten.
  • Halte VBA-Referenzen auf dem neuesten Stand, um mögliche Komplikationen mit verschiedenen Excel-Versionen zu vermeiden.
  • Experimentiere mit der Positionierung von Userforms, um eine benutzerfreundliche Oberfläche zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich die Auflösung des Monitors abfragen?
Du kannst die API-Funktion GetMonitorInfo verwenden, um Informationen zur Auflösung und zu den Eigenschaften des Monitors abzurufen.

2. Ist diese Methode in allen Excel-Versionen anwendbar?
Die vorgestellten Methoden sind in Excel 2010 und höher anwendbar. Achte darauf, dass du die richtigen API-Deklarationen für 32-Bit oder 64-Bit 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