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

UserForm Bildschirmskalierung anpassen

UserForm Bildschirmskalierung anpassen
17.04.2023 14:09:00
Max Remmert

Guten Tag zusammen,

Ich erstelle zurzeit ein Expertensystem für die Auswahl von geeigneten Packmitteln für bestimmte Gefahrenstoffe. Damit die Stammdaten des Systems einfach gepflegt werden können erfolgt die Dateneingabe in Excel - die Daten werden anschließend automatisiert exportiert. Für den Benutzer werden Eingabemasken als EXCEL-User-Form zur Verfügung gestellt. Die Darstellung des User-Forms soll nun auf jeglichen Rechnern, unabhängig von Bildschirmauflösung und Skalierung identisch dargestellt werden.

Problem: Ändert man in den Windows-Anzeigeeinstellungen (siehe "Screenshot1_Anzeigeeinstellungen") die Skalierung (z.B. von 100% auf 125%), wird das USER-Form anschließend völlig verzerrt dargestellt (siehe "Screenshot2_verzerrte_Darstellung"). Gibt es eine Möglichkeit bei Start der Excel-Datei, die Skalierung abzufragen und das User-Form automatisch anzupassen, sodass es immer korrekt dargestellt wird (siehe "Screenshot3_korrekte_Darstellung")?

Eine ähnliche Lösung gibt es für die Bildschirmauflösung (siehe: https://www.excel-inside.de/beispiele_vba/vba-userforms/318-userform-anhand-der-bildschirmaufloesung-zoomen), jedoch nicht für den Skalierungsfaktor. Ich bin über jeden Lösungsvorschlag und Ideen dankbar!

Screenshots: https://www.herber.de/bbs/user/158753.zip

Vielen Dank und beste Grüße,

Max

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm Bildschirmskalierung anpassen
17.04.2023 14:39:32
Nepumuk
Hallo Max,

teste mal (im Modul des Userforms):

Option Explicit

Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long
Private Declare PtrSafe Function GetDesktopWindow Lib "user32.dll" () As LongPtr
Private Declare PtrSafe Function GetDC Lib "user32.dll" ( _
    ByVal hwnd As LongPtr) As LongPtr
Private Declare PtrSafe Function ReleaseDC Lib "user32.dll" ( _
    ByVal hwnd As LongPtr, _
    ByVal hdc As LongPtr) As Long
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32.dll" ( _
    ByVal hdc As LongPtr, _
    ByVal nIndex As Long) As Long

Private Const SM_CXSCREEN As Long = 0&
Private Const SM_CYSCREEN As Long = 1&
Private Const LOGPIXELS_X As Long = 88&
Private Const LOGPIXELS_Y As Long = 90&

Private Sub UserForm_Activate()

    Dim sngWidth As Single, sngHeight As Single

    sngWidth = Width
    sngHeight = Height

    Left = 0
    Top = 0

    Width = GetSystemMetrics(SM_CXSCREEN) * GetResolution(LOGPIXELS_X)
    Height = GetSystemMetrics(SM_CYSCREEN) * GetResolution(LOGPIXELS_Y)

    Zoom = Fix(Application.Min(Width / sngWidth, Height / sngHeight) * 100)

End Sub

Private Function GetResolution(ByVal pvlngLogPixel As Long) As Single

    Dim lngptrhWndDesk As LongPtr, lngptrhDCDesk As LongPtr
    Dim lnglogPixel As Long

    lngptrhWndDesk = GetDesktopWindow()
    lngptrhDCDesk = GetDC(lngptrhWndDesk)

    lnglogPixel = GetDeviceCaps(lngptrhDCDesk, pvlngLogPixel)

    Call ReleaseDC(lngptrhWndDesk, lngptrhDCDesk)

    GetResolution = 72 / lnglogPixel

End Function
Gruß
Nepumuk


Anzeige
AW: UserForm Bildschirmskalierung anpassen
17.04.2023 15:11:31
MaxR
Danke Nepumuk,

der Ansatz ist schon einmal sehr gut und hilft mir auf jeden Fall erstmal weiter. Das User-Form ist zwar weiterhin verzerrt, jedoch besteht kein Unterschied mehr zwischen unterschiedlichen Bildschirmskalierungen. Erster Erfolg!

Jedoch kommt es noch nicht zum gewünschten Effekt. Die Steuerelement und der Hintergrund sind nicht übereinander und das Fenster des User-Forms hat nicht die gewünschte Größe (wie vorgegeben). Siehe:

Userbild

Ich bastel mal selber weiter, bin jedoch für alle weiteren Vorschläge und Ideen zur Lösung dankbar!

Gruß,

Max


Anzeige
AW: UserForm Bildschirmskalierung anpassen
17.04.2023 18:08:06
Oberschlumpf
na, Max, ne EXCEL-Bsp-Datei mit Userform(s), und nich nur Bilddateien könnte dazu beitragen, mehr und/oder schneller weitere, mögliche Antworten zu erhalten
...mit Excel-Dateien kann man nämlich besser (mit)testen als mit JPG-Dateien


AW: UserForm Bildschirmskalierung anpassen
18.04.2023 08:27:34
MaxR
Hallo Oberschlumpf,

ich gebe Dir recht. Ich habe die Datei bisher nicht hochgeladen, da sie sensible Daten enthält. Hier aber eine Dummy-Version mit dem entsprechenden User-Form zum rumprobieren erstellt: https://www.herber.de/bbs/user/158766.xlsm

Weiterhin bitte ich im Lösungsvorschläge! Danke an die Community.


Anzeige
AW: UserForm Bildschirmskalierung anpassen
18.04.2023 09:26:26
Oberschlumpf
Hi Max,

danke für die Datei!
Nun muss ich sagen, dass zumindest ich leider nicht weiterhelfen kann.

Wenn ich die Datei nutze, funktioniert immer alles.
Nix vom Userform wird verzehrt oder sonst irgendwie falsch dargestellt.
Ok, getestet hab ich nur mit unterschiedlichen Zoom-Werten der Excel-Datei, eine/mehrere andere Bildschirmauflösung(en) hab ich nicht getestet.
Aber du hattest ja auch selbst geschrieben, dass das Problem "nur noch" bei Änderung von Zoom in Excel passiert.

DASS bei mir kein Fehler auftritt, liegt daran, denke ich, weil ich nur einen Monitor nutze.

Ich bin sicher, es wird hier Helfer geben, die mindestens n 2. Monitor auf ihrem Schreibtisch stehen haben :-)

Weiter viel Erfolg!

Ciao
Thorsten


Anzeige
AW: UserForm Bildschirmskalierung anpassen
18.04.2023 11:17:14
MaxR
Hallo Thorsten,

trotzdem danke dass Du mit gedacht hast. Sorry falls mich falsch ausgedrückt habe, aber ich beziehe mich nicht auf die Zoom-Funktion in Excel! Die Verzerrung tritt auf, wenn in den Windows Anzeigeeinstellungen (Einstellungen-->System-->Bildschirm-->"Skalierung und Anordnung"), der Skalierungsfaktor verändert wird (z.B. von 100% auf 150%). Der Effekt wird erst nach dem Neustart von Excel sichtbar. Ein Problem bei unterschiedlichen Bildschirmauflösungen tritt nicht auf.

Ich konnte das Problem bereits auf mehreren Rechner reproduzieren, jedoch nicht lösen...


Anzeige
AW: UserForm Bildschirmskalierung anpassen
18.04.2023 16:53:50
Oberschlumpf
Hi Max,

sorry, war doch eher mein Fehler, dass wir aneinander vorbei geredet haben.
Ich hatte deine erste, durchaus richtige Beschreibung, leider erst mal falsch verstanden.
(hierzu trotzdem n Tipp: bei neuen/weiteren Fragen versuch nicht, einen Bearbeitungsweg zu UMschreiben sondern schreib jeden einzelnen, oder die wichtigsten Schritte auf, was du tust, damit etwas bestimmtes passiert..oder ähnlich)

Und ja, jetzt, wenn ich über den von dir beschriebenen Weg die Bildschirm!!!! - nicht Excel-Skalierung ändere und das Userform starte, sehe auch ich die Verzerrungen trotz Verwendung von nur 1 Monitor.

Gegoogelt nach Lösung hab ich (auch), aber gefunden hab ich...nix :-/

Ciao
Thorsten

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige