Userform Bildschirmauflösung Probleme

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 04.12.2015 10:26:58

Hallo Excel-Freunde und Spezialisten,
ich habe die u.a. Makros in meine Datei eingefügt, diese stammen aus dem
Archiv von Herber:
UserForm an Monitor anpassen von Excelmania vom 21.06.2005 19:02:06
AW: UserForm an Monitor anpassen - von Hajo_Zi am 21.06.2005 19:07:52
'Modul1
Option Explicit
Public Const SM_CXSCREEN = 0
Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Sub Datenmaske_öffnen()
UserForm1_Datenmaske.Show
End Sub
'in UserForm:

Private Sub UserForm_Initialize()
'   Bildschirmauflösung, unter der die Userform erstellt wurde
'   Breite  1152; 1280; 640
'   Höhe     864; 1024; 480
'   1152 ist die Breite des Bildschirmes bei Erstellung
'   Code Zeile von L.Vira Anpassung der Formel mit Wertermttlung von Hajo.Ziplies@web.de
    Me.Zoom = GetSystemMetrics(SM_CXSCREEN) / 1152 * 100
End Sub

Private Sub UserForm_Zoom(Percent As Integer)
'   Code von L.Vira
    Me.Width = Me.Width * Percent / 100
    Me.Height = Me.Height * Percent / 100
End Sub

Private Sub UserForm_Activate
'setzt Userform beim Öffnen auf links =0 und oben==
    Me.Left = 0
    Me.Top = 0
End Sub
Nun zu meinem Problem:
Wenn ich auf meinem Rechner die Bildschirmauflösung 1280x600 auswähle, wird ein Teil der
Userform unten abgeschnitten. Wenn ich die Datei auf einem fremden Rechner installiere
bei einer Bildschirmauflösung 1920x1080, dann reagiert die Userform nicht und wird in
extrem grosser Darstellung angezeigt.
Wer kann mir bitte helfen, dass die Userform auf alle Bilschirmauflösungen richtig reagiert.
Besten Dank
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 04.12.2015 11:00:13
Hallo,
teste mal:

Option Explicit

Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long

Private Const SM_CXSCREEN As Long = 0
Private Const SM_CYSCREEN As Long = 1

Private Sub UserForm_Activate()
    Dim sngWidth As Single, sngHeight As Single
    sngWidth = Width
    sngHeight = Height
    Left = 0
    Top = 0
    Width = GetSystemMetrics(SM_CXSCREEN) * 0.75
    Height = GetSystemMetrics(SM_CYSCREEN) * 0.75
    Zoom = Fix(WorksheetFunction.Min(Width / sngWidth, Height / sngHeight) * 100)
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 04.12.2015 11:28:28
Hallo Nepumuk,
besten Dank für Deine schnelle Antwort. Habe in ein Modul Deine Daten eingetragen und
bei Sub UserForm_Activate ebenfalls. Fehlermeldung beim Kompilieren: Variable nicht definiert.
Wo liegt bitte der Fehler?
Danke Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 04.12.2015 11:30:37
Hallo,
der komplette Code muss in das Modul des Userforms.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 04.12.2015 11:44:35
Hallo Nepumuk,
besten Dank auf meinem Rechner funktioniert das einwandfrei. Mit den verschiedenen Bildschirmauflösungen. Aber sobald diese Datei auf einem anderen Rechner geöffnet wird,
funktioniert dies nicht. Der Bildschirm dort hat eine Auflösung 1900x1080. Die Userform
wird geöffnet und überragt den Exelrand um ca ein Drittel. Betriebsystem dort Windows 8a
und das gleiche Office wie bei mir.
Warum reagiert dieser Rechner nicht auf diese Makros bzw. Variablen
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 04.12.2015 11:53:02
Hallo,
keine Ahnung was da nicht passt. Bei mir mit 1920 x 1080 wird der Bildschirm ausgefüllt.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 04.12.2015 11:56:25
Hallo Nepumuk,
besten Dank nochmals für Deine Hilfe. Leider kann ich bei mir diese Auflösung nicht ausprobieren,
das meine Grafikkarte dies nicht hergibt.
Gibt es vielleicht einen anderen Lösungsweg?
Danke Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 04.12.2015 15:48:27
Hallo,
lass mal in einer neuen Mappe folgende Prozedur laufen:

Option Explicit

Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long

Private Const SM_CXSCREEN As Long = 0
Private Const SM_CYSCREEN As Long = 1

Public Sub Test()
    Application.WindowState = xlMaximized
    Debug.Print Application.Width & " / " & Application.Height
    Debug.Print GetSystemMetrics(SM_CXSCREEN) * 0.75 & " / " & GetSystemMetrics(SM_CYSCREEN) * 0.75
End Sub


Was wird im Direktfenster ausgegeben?
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 05.12.2015 11:29:45
Hallo Nepumuk,
besten Dank für Deine Antwort.
Ich habe den Test nun durchgeführt.
Bei meinem Rechner ergeben sich folgende Werte:
1212 / 657
1200 / 675
Bei dem anderen gibt es eine erhebliche Differenz:
971 / 523
1140 / 810
Diese Problem hatte ich bereits mit anderen Userforms auf dem Rechner, welche ich manuell reguliert habe. Da jedoch diese Datei jetzt auf mehreren Rechnern funktionieren soll, will ich nicht jedesmal
eine Änderung vornehmen. Es nützt mir nichts wenn ich den Faktor von 0,75 z. B. auf 0,5 ändere.
Vielleicht weisst Du eine Lösung bei welcher die ersten ausgelesenen Werte von Application.widht und height automatisch in die GetSystemMetrics übernommen werden. Dann würde jede Userform an das existierende Windowsfenster angepasst werden. Ich weiss nicht ob ich hier richtig liege - vorallem weiss ich nicht wie ich das umsetzen kann.
Danke für Deine Mühe
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 05.12.2015 16:29:52
Hallo,
es scheint die Bildschirmauflösung wurde über den Schriftgrad geändert. Nicht ganz einfach auszulesen.
Übernimm doch einfach für Userform.Width / Userform.Height = Application.Width / Application.Height.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 06.12.2015 06:48:12
Hallo Nepumuk,
besten Dank aber ich mir fehlt momentan der Durchblick. Wo bitte soll ich das einfügen.
Bezüglich der Bildschirmauflösung steht diese bei Aufruf über Desktop rechte Maustaste Anzeigeeinstel-
lungen auf dem höchsten Wert. Wo ändert man die Einstellung bei Windows 8a über den Schriftgrad?
Danke und ein schönes Wochenende.
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 06.12.2015 09:30:49
Hallo,
Systemsteuerung - Anzeige. Dort findest du im Beschreibungstext Elementgröße ändern einen Link zu "eine benutzerdefinierte Skalierungsstufe festlegen (nicht empfohlen)". Dort sind als Standard 100% eingestellt.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 06.12.2015 11:10:42
Hallo Nepumuk,
danke für Deine Antwort.
Leider fehlt mir noch Deine Auskunft zu "Übernimm doch einfach für Userform.Width / Userform.Height = Application.Width / Application.Height."
Wo soll ich bitte dies Einfügen? Danke
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 06.12.2015 12:13:23
Hallo,
so:

Private Sub UserForm_Initialize()
    StartUpPosition = 0
    Top = 0
    Left = 0
    Width = Application.Width
    Height = Application.Height
End Sub

Das stimmt zwar auch nicht ganz, ist aber besser als vorher.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 06.12.2015 14:13:27
Hallo Nepumuk,
Danke für Deine Hilfe.
Wie wird den das Ganze dann angepasst Steuerelemente im Verhältnis zur Userform ohne Verzerrung?
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 07.12.2015 09:09:01
Hallo Nepumuk,
ich glaube ich habe jetzt die Ursache des Problems gefunden.
Wie schon erwähnt funktioniert bei mir die Einstellung der Userform. Nicht jedoch auf dem anderen PC.
Wie Du schon vermutet hattest liegt es wohl an der Einstellungen - Bildschirm - Grösse von Text ect.
hier steht der Schieberegler bei Windows 8a auf hoch statt auf normal bzw. niedrig.
Dadurch dürfte diese enorme Abweichung entstehen. Wie lässt sich dies ändern aber nur für die Dauer
des Vorgangs Öffnen Userform beim Schliesen wieder alte Einstellung.
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 07.12.2015 18:52:27
Hallo,
da hab ich keinen Plan. Hat denn der Code von Planlos eine Verbesserung gebracht oder ist das das selbe wie bei meinem ersten Code?
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 08.12.2015 12:48:56
Hallo Nepumuk,
mit folgender Einstellung im Code der Userform funktioniert die Userform einwandfrei.

Private Sub userform_activate()
StartUpPosition = 0
    Top = 5
    Left = 5
    Width = Application.Width - 20
    Height = Application.Height - 20
End Sub
Daher habe ich den Vorschlag von Planlos nicht mehr weiterverfolgt.
Bezüglich dem Inhalt der Userform sprich Steuerelemente ist die Zoom-Eigenschaft zu ändern ungünstig,
weil dadurch Verzerrungen entstehen.
Ich habe mir folgendes Modul erstellt, für alle Eigenschaften Left, Top, Width, Height je Steuerelement:
Option Explicit
'** API-Funktion zum Auslesen der Bildschirmauflösung
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
#If Win64 Then
Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As LongPtr) As Long
#Else
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#End If
Sub UserForm_Test()
Dim CmdW_Basis As Integer 'Breite von Commandbutton
Dim CmdH_Basis As Integer 'Höhe von Commandbutton
Dim WBasis As Integer 'Basiswert der horizontalen Bildschirmauflösung
Dim HBasis As Integer 'Basiswert der vertikalen Bildschirmauflösung
Dim WWert As Integer 'ausgelesener horizontale Bildschirmauflösung
Dim HWert As Integer 'ausgelesene vertikale Bildschirmauflösung
Dim WWB As Integer 'Verhältnis zwischen horizontaler Bildschirmauflösung und Basisbildschirmauflösung
Dim HWB As Integer 'Verhältnis zwischen vertikaler Bildschirmauflösung und Basisbildschirmauflösung
'Basiswert von Commandbutton
CmdW_Basis = UserForm1_Datenmaske2.CommandButton8.Width
CmdH_Basis = UserForm1_Datenmaske2.CommandButton8.Height
'Basiswert von Bildschirmauslösung
WBasis = 1600
HBasis = 900
'Ausgelesene horizontale und vertikale Bildschirmauflösung
WWert = GetSystemMetrics(SM_CXSCREEN)
HWert = GetSystemMetrics(SM_CYSCREEN)
'Test ist Verhältnis zwischen horizontaler ausgelesener und Basis Bildschirmauflösung
WWB = WWert / WBasis
'Test ist Verhältnis zwischen vertikaler ausgelesener und Basis Bildschirmauflösung
HWB = HWert / HBasis
'alle Width 35 Label, 31 Textboxes, 9 Combiboxes, 8 Commandbutton,1 Listbox, 2 Register
UserForm1_Datenmaske2.Label723.Width = UserForm1_Datenmaske2.Label723.Width * WWert / WBasis
Das funktioniert von Bildschirmauflösung 1600x900 abwärts nicht jedoch aufwärts. Es geht um die Auflösung 1920x1080 dort werden die Elemente jetzt zu gross. Problem ist ausserdem, dass die Bildschirme bezüglich Anzeige der Schriftgrössen unterschiedlich gesteuert sind.
Andere Programme sind hiervon abhängig. Gibt es hierfür eine Lösung?
Danke Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Nepumuk
Geschrieben am: 08.12.2015 15:35:15
Hallo,
verzerrungsfrei wirst du das nicht hinbekommen. Du solltest das Userform auf einem Bildschirm mit hoher Auflösung entwickeln, also passend machen, und dann nur verkleinern falls notwendig.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 09.12.2015 05:48:22
Hallo Nepumuk,
besten Dank für Deine Hilfe.
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 09.12.2015 14:45:50
Hallo Nepumuk,
danke für Deinen Hinweis, das ist eine sehr gute Idee. Habe jetzt die Lösung für Userform soweit fertig.
Die Userform öffnet egal auf welchem Bildschirm mit den richtigen Werten. Ich habe aber noch Probleme,
wenn der User im System unter Anzeigeeinstellungen - Grösse von Text, Apps ect. ändern von 100 % auf 125 % bzw. 150 % wechselt.
Wie erhält man Zugriff auf diese API damit man z.B. eine IF einrichten kann:
If Anzeigeeinstellung = 100 % then ...
Else Anzeigeeinstellung = 125 % then...
Else Anzeigeeinstellung = 150 % then...
End If
Nur so als laienhaftes Beispiel. Es gibt doch sicherlich eine Funktion, wo man diesen Wert abfragen kann oder???
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Hajo_Zi
Geschrieben am: 06.12.2015 12:13:53
Hallo Peter,
bei
Private Sub UserForm_Activate()


Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 06.12.2015 14:11:19
Hallo Hajo,
besten Dank für Deine Auskunft.
Was nicht passt ist die Anpassung der Steuerelemente (Zoom),
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Planlos
Geschrieben am: 05.12.2015 16:37:12
Hallo
ggf mußt du die Fontscalierung berücksichtigen.
luftcode, weil fehlende Api-Deklas, denn mit 64bit kenn ich mich nicht aus.


dim lRet as long
dim lx as long
dim ly as long
lx = 96
ly = 96
lret = CreateIC("DISPLAY", vbNullString, vbNullString, vbNullString)
if lret <> 0 then
lx = GetDeviceCaps(lret, 88)
ly = GetDeviceCaps(lret, 90)
DeleteDC lRet
endif
Die '0.75' ersetzt du jetzt durch '72/lx' bzw '72/ly'.
die deklas in 32bit sind
Public Declare Function CreateIC Lib "gdi32" Alias "CreateICA" _
( _
ByVal lpDriverName As String, _
ByVal lpDeviceName As String, _
ByVal lpOutput As String, _
byref lpInitData As Any _
) As Long
Public Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long
Public Declare Function GetDeviceCaps Lib "GDI32.DLL"
( _
ByVal hDC As Long, _
ByVal nIndex As Long _
) As Long

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 06.12.2015 07:01:32
Hallo Planlos,
nett dass Du Dich mit meinem Problem befasst, aber leider komme ich mit Deinen Werten nicht zurecht.
Wo bitte muss ich was einfügen?
Danke
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Planlos
Geschrieben am: 06.12.2015 12:23:12
Hallo.
in etwa so, aber bedenke ist keine 64 Bit - deklaration, d.h. du musst diesen ggf deinem 64bit Office anpassen:

Private Declare Function CreateIC Lib "gdi32" Alias "CreateICA" _
    ( _
        ByVal lpDriverName As String, _
        ByVal lpDeviceName As String, _
        ByVal lpOutput As String, lpInitData As Any _
    ) As Long
Private Declare Function DeleteDC Lib "gdi32" _
    ( _
        ByVal hDC As Long _
    ) As Long
Private Declare Function GetSystemMetrics Lib "user32" _
    ( _
        ByVal nIndex As Long _
    ) As Long
    
Private Declare Function GetDeviceCaps Lib "GDI32.DLL" _
    ( _
        ByVal hDC As Long, _
        ByVal nIndex As Long _
    ) As Long
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Sub UserForm_Activate()
    Dim lxDot As Long
    Dim lyDot As Long
    Dim lIC As Long
    lxDot = 96
    lyDot = 96
    lIC = CreateIC("DISPLAY", vbNullString, vbNullString, vbNullString)
    If lIC <> 0 Then
        lxDot = GetDeviceCaps(lIC, LOGPIXELSX)
        lyDot = GetDeviceCaps(lIC, LOGPIXELSY)
        DeleteDC lIC
    End If
    Me.Left = 0
    Me.Top = 0
    Me.Width = GetSystemMetrics(SM_CXSCREEN) * (72 / lxDot)
    Me.Height = GetSystemMetrics(SM_CYSCREEN) * (72 / lyDot)
End Sub


Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 06.12.2015 14:08:57
Hallo,
habe das mal ausprobiert. Das mit der Userform anpassen könnte funktionieren, was jedoch fehlt ist
eine Anpassung der Steuerelemente (Zoom). Kennst Du da was diese im gleichen Verhältnis anpasst ohne
zu verzerren?
Danke
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Planlos
Geschrieben am: 06.12.2015 14:51:12
Hallo
die Zoom-Funktion kannte ich jetzt nicht, Excel ist nicht meine Baustelle, aber probier halt mal

Me.Zoom = 100 * 96 / lxDot


Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 09.12.2015 14:50:41
Hallo Planlos,
Das mit der Zoom-Funktion geht leider nicht so wie ich es mir vorstelle. Habe jetzt die Lösung für Userform soweit fertig. Verwende hierzu Deine Lösung.
Die Userform öffnet egal auf welchem Bildschirm mit den richtigen Werten. Ich habe aber noch Probleme,
wenn der User im System unter Anzeigeeinstellungen - Grösse von Text, Apps ect. ändern von 100 % auf 125 % bzw. 150 % wechselt.
Wie erhält man Zugriff auf diese API damit man z.B. eine IF einrichten kann:
If Anzeigeeinstellung = 100 % then ...
Else Anzeigeeinstellung = 125 % then...
Else Anzeigeeinstellung = 150 % then...
End If
Nur so als laienhaftes Beispiel. Es gibt doch sicherlich eine Funktion, wo man diesen Wert abfragen kann oder???
Gruss Peter

Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Planlos
Geschrieben am: 09.12.2015 17:39:04
Hallo
ja mein Vorschlag bezüglich des Zooms ist falsch.
was das Problem der unterschiedlichen Textgrössen betrifft, so verwendedst du nicht meinen gemachten Vorschlag, denn dieser berücktsichtigt ja die verschiedenen Textgrössenstufen. (zumindest mal unter Win7)
Den Zugriff auf die Api hatte ich schon gezeigt, du muss nur noch Dreisatz rechnen.

lxDot / 96 * 100
ergibt die gesetzte Textgrösseneinstellung.
Aber u.U. wird dir eine feste If-Prüfung nicht helfen, da die Textgröße Werte zw. 100 und 500 Prozent einnehmen kann, sind also nicht auf 100%, 125% oder 150% beschränkt.


Bild

Betrifft: AW: Userform Bildschirmauflösung Probleme
von: Peter
Geschrieben am: 10.12.2015 09:42:40
Hallo Planlos,
ich gehe mal davon aus, dass ich Me.Zoom = lxdot / 96 * 100 nehmen soll. Habe dies natürlich ausprobiert und festgestellt keine Reaktion. Wie auch! lxdot = 96 damit Ergebnis 96 / 96 * 100 Ergebnis 100. Das mit der Userform ist ja ok aber die Steuerelemente funktionieren nicht.
So wie es aussieht muss die Berechnung lauten: Me.Zoom=GetSystemMetrics(SM_CXSCREEN) / 1600 * 100.
Damit das jedoch auch bei einer Bildschirmauflösung von 1920x1080 funktioniert dürfte wiederum Nepumuk recht haben, dass man die Userform dort erstellen muss und dann dürfte es funktionieren. Oder ist Dir
eine Umrechnung bekannt, die es ermöglicht über eine Formel die Bildschirmauflösung auch in andere Richtung zu berechnen.
Gruss Peter

Bild

Betrifft: AW: Ähh nöö
von: Planlos
Geschrieben am: 10.12.2015 19:12:25
die Formel (lxDot / 96 * 100 ) berechnet nur die eingestellte Lesbarkeit welche in Systemsteuerung - Anzeige gesetzt wurde( 100, 125, 150 oder den Wert der manuellen nicht empfohlenen Einstellung ). lxdot selbst wird benötigt wenn du Pixel ( welche du z.b. mit GetSystemMetrics(SM_CXSCREEN) erhälst )in von Excel verwendete Grössenangabe für Width und Height berechnen willst/musst.
Zur Zoomberechnung solltest du die formel von Nepumuk verwenden.

Bild

Betrifft: neues Problem Bildschirmauflösung
von: Peter
Geschrieben am: 12.12.2015 07:18:55
Hallo Planlos,
Eure Informationen zu Anpassung Userform und Zoom sind korrekt. Habe ein anderes Problem herausgefunden.
Wenn ich die Datei auf meinem Rechner durchführe ist alles ok. Auf den beiden anderen Rechnern ist aber folgendes Problem:
Dort läuft ein Programm welches zur ordnungsgemässen Darstellung eine Anpassung der Bildschirmauflösung benutzt. D. h. auf dem einen PC ist bei Einstellungen für Bildschirm 125 % eingestellt beim Anderen sind es 150 % bei unterschiedlicher Grundeinstellung der Bildschirmauflösungen. Nun meine konkrete Frage.
Wie ich die aktuellen Bildschirmauflösung auslesen kann hat mir Nepumuk ja mitgeteilt. Jetzt würde ich aber auch noch das Auslesen der eingestellten Bildschirmauflösung benötigen. Mit welcher Funktion kann dies erfolgen oder hättest Du einen anderen Vorschlag?
Ich habe auch schon eine Datei bei welcher ich beim Öffnen die Bildschirmauflösung ändere. Aber ich würde diese benötigen wenn ich Excel benutze ist Makro Bildschirmauflösung einstellen 1 aktiv wenn ich anderes Programm benutze ist Bildschirmauflösung einstellen2 aktiv.
Ich hoffe ich habe mich verständlich ausgedrückt. Vielen Dank für Deine Hilfe.
Gruss Peter

Bild

Betrifft: AW: neues Problem Bildschirmauflösung
von: Planlos
Geschrieben am: 12.12.2015 19:06:56
Hallo
bevors jetzt wild wird, hab jetzt nix verstanden, wir reden doch von (blicke Bild):
wenn ja sollte es wie gezeigt mit den Api's funktionieren. Evtl. zeigst du mal deinen bisherigen implementierten Code in Form einer xls.
Userbild

Bild

Betrifft: AW: neues Problem Bildschirmauflösung
von: Peter
Geschrieben am: 17.12.2015 07:37:02
Hallo Planlos,
Danke für Deine Info. Ich habe jetzt eine Datei erstellt. Folgendes Problem:
Ich habe eine Userform die sich an die Bildschirmauflösung anpasst. Nur der Inhalt der UF (Steuerelemente)passen sich nicht an. Auf den PC ist ein Programm installiert, welches je nach Monitor über System - Einstellungen - Bildschirm - Grösse von Text ect. auf 100, 125 oder 150 % eingestellt sind.
Z. B. der eine PC hat bei 100% 2400x1350, bei 125 % 1920x1080 und bei 150 % 1600x900.
der andere PC hat bei 100% 2880x1620, bei 125 % 2304x1296 und bei 150 % 1920x1080.
Diese Programm benötigt Einstellung 1920x1080.
Ich habe nun meine UF bei der Auflösung 2400x1350 erstellt. Beim ersten PC muss ich nun Zoom 80 % und beim anderen PC Zoom 100 % einstellen. Alle PC sind auf 1920x1080 eingestellt haben aber je nach Monitor eine andere Zoomeinstellung. Wenn ich per API oder ähnlichem abfragen könnte, welche höchste Bildschirmauflösung vorhanden ist und welche Grösse von Text ect. eingestellt ist könnte ich dies automatisch angleichen. Ich füge eine Musterdatei bei. Hier ist der Code in der Userform zutreffend.
https://www.herber.de/bbs/user/102310.xlsm
Vielleicht weisst Du eine Lösung.
Gruss Peter

Bild

Betrifft: AW: neues Problem Bildschirmauflösung
von: Planlos
Geschrieben am: 17.12.2015 16:55:44
hallo
hier deine Datei zurück. Code liegt im Modul3. Ist aber auch nix anderes wie ich ihn dir schon gepostet hatte.
https://www.herber.de/bbs/user/102320.xlsm

Bild

Betrifft: AW: neues Problem Bildschirmauflösung
von: Peter
Geschrieben am: 18.12.2015 07:21:00
Hallo Planlos,
besten Dank für Deine Hilfe, aber leider funktioniert es nicht. Die Zoomeigenschaft geht nicht.
Leider
Gruss Peter

Bild

Betrifft: AW: neues Problem Bildschirmauflösung
von: Planlos
Geschrieben am: 18.12.2015 09:23:36
Hallo
genau, wohl eher so

u.Zoom = WorksheetFunction.Min(GetDeviceCaps(hdc, HORZRES) / xesys, GetDeviceCaps(hdc, VERTRES) / yesys) * 100 * 96 / GetDeviceCaps(hdc, LOGPIXELSX)


Bild

Betrifft: AW: neues Problem Bildschirmauflösung
von: Planlos
Geschrieben am: 18.12.2015 09:23:55
Hallo
genau, wohl eher so

u.Zoom = WorksheetFunction.Min(GetDeviceCaps(hdc, HORZRES) / xesys, GetDeviceCaps(hdc, VERTRES) / yesys) * 100 * 96 / GetDeviceCaps(hdc, LOGPIXELSX)


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Userform Bildschirmauflösung Probleme"