Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UserForm an variable Bildschirmaufloesung anpassen

UserForm an variable Bildschirmaufloesung anpassen
05.10.2007 21:35:00
Thomas
Hallo an alle VBA-Profis,
ich bin momentan schier am verzweifeln...
Ich habe eine automatisierte Excel-Datei erstellt (Anwender arbeitet nur mit den Userforms, hat keinen Einblick "hinter die Kulissen", also sprich Excel-Tabellen). Ich habe die einzelnen Userforms ueber den Code

Private Sub UserForm_Initialize()
With Me
.Height = Application.Height
.Width = Application.Width
End With
End Sub


an meine Bildschirmaufloesung angepasst, d.h. die einzelne UserForm fuellt den kompletten Bildschirm aus! Nun habe ich aber, wie Ihr Euch sicher vorstellen koennt, folgendes Problem:
Sollte meine Datei an anderen Rechnern mit unterschiedlicher Aufloesung aufgemacht werden, fuellen die UserForms nicht mehr den kompletten Bildschirm aus!!!
Ich habe beim recherieren zwar folgenden Code gefunden (http://www.chf-online.de/vba/aufloesungswechsel.htm), komme jedoch mit diesem ueberhaupt nicht zurecht!!! Irgendwie kommen nur Fehlermeldungen...
Ich bin wirklich fuer jede Hilfe dankbar!!!
Gruesse
Thomas

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
05.10.2007 22:02:00
Ramses
Hallo
mal eine einfache Variante
Private Sub UserForm_Initialize()
    Application.WindowState = xlMaximized
    With Me
        .Height = Application.Height
        .Width = Application.Width
    End With
End Sub

Dein UF bezieht sich ja auf die Fenstergrösse von EXCEL, daher vorher die Applikation maximieren,... dann sollte das tun.
Gruss Rainer

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
05.10.2007 22:45:09
Thomas
Hallo Rainer,
Dein Code maximiert zwar das Excel- Fenster auf volle Groesse (danke, das ist nicht mal so schlecht), hilft mir aber in meinem Fall leider nicht weiter, da, sobald ich meine Aufloesung (1024*768) aendere, die UserForm nicht mehr vollstaendig sichtbar ist (z.B. bei 800*600) oder sie nicht mehr den gesamten Bildschirm ausfuellt (z.B. bei 1280*1024)!!! Ich glaube, dass der von mir verwendete Code genau das machen wuerde, wonach ich suche...
Aber wie schon gesagt, irgendetwas funktioniert da nicht!?
Ich habe die Prozedur in einem Modul aufgefuehrt, danach rufe ich sie in den jeweiligen UserForms auf! So weit so gut! Sobald ich die UserForm jedoch laufen lassen will, bringt er mir die Meldung, dass die Variable "System" nicht definiert sei...
' Vergrößerungs-/Verkleinerungsfaktor der aktuellen Auflösung
' in Bezug auf die ursprünglche Auflösung
XFactor = System.HorizontalResolution / X_RESOLUTION
YFactor = System.VerticalResolution / Y_RESOLUTION
Thomas

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
05.10.2007 22:54:00
Ramses
Hallo
"....die UserForm nicht mehr vollstaendig sichtbar ist ... "
Das kannst du auch mit dem Code nicht ändern, dazu müsstest du dann auch jedes Control in der Grösse und Position anpassen.
"...oder sie nicht mehr den gesamten Bildschirm ausfuellt (z.B. bei 1280*1024)!..."
Wenn EXCEL maximiert ist, dann wird auch deine UF entsprechend gross. Wenn es das nicht machen würde, würde mich das sehr wundern.
Gruss Rainer

AW: UserForm an variable Bildschirmaufloesung anpa
05.10.2007 23:05:02
Thomas
Nein, des haut eben nicht so ganz hin...
Ich wuerde diesen Code gerne verwenden, aber da scheiterts einfach an meinen VBA- Kenntnissen... Ich verstehe zwar die Prozedur, weiss aber leider nicht, wie ich diese Fehlermeldung wegkriege...(siehe vorherigen Beitrag von mir)!
Liebe Gruesse

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
05.10.2007 23:26:00
K.Rola
Hallo Ramses,
Userforms haben ein Zoom-Ereignis, mit dem auch alle Controls gezoomt werden.
Gruß K.Rola

AW: UserForm an variable Bildschirmaufloesung anpa
06.10.2007 10:59:20
Ramses
Hallo
K.Rola,... das ist richtig.
Aber damit wird eben auch die Grösse des Controls verändert, nicht nur die Position, u.U. bis zur Unleserlichkeit je nach Grösse der Userform und Zoomfaktor.
Der zweite Nachteil ist, dass der Zoomfaktor eben nicht die Grösse der UF verändert.
Da kann es dann eben passieren, dass dann Controls schon bei einer 10% Vergrösserung über die Grenzen der UF hinaus verschoben werden, je nach Positionierung, und nicht mehr sichtbar sind.
Gruss Rainer

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
06.10.2007 22:32:00
Herby
Hallo Thomas,
dein Problem ist doch:
' Vergrößerungs-/Verkleinerungsfaktor der aktuellen Auflösung
' in Bezug auf die ursprünglche Auflösung
XFactor = System.HorizontalResolution / X_RESOLUTION
YFactor = System.VerticalResolution / Y_RESOLUTION
dass in obigen Code die beiden Einträge:
System.HorizontalResolution
System.VerticalResolution
(auch bei mir) nicht gelesen werden können. Diese Einträge enhalten die akutelle Bildschirmauflösung.
Diese kann auch per API abgefragt werden und schon funktionierts.
Im allg. Modul
Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
ergänzen und dann noch die beiden Zeilen anpassen:
XFactor = GetSystemMetrics32(SM_CXSCREEN) / X_RESOLUTION
YFactor = GetSystemMetrics32(SM_CYSCREEN) / Y_RESOLUTION
Viele Grüße
Herby

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
08.10.2007 17:46:49
Thomas
Hallo Herby,
habs ausprobiert, hat aber keinerlei Wirkung! Er bringt mir zwar keine Fehlermeldung, aber sobald ich die Aufloesung umstelle, sind die Controls verrutscht und das Fenster teilweise (bei geringerer Aufloesung als urspruenglicher) sogar nicht mal max. Bildschirm! Ich bin wirklich kurz vorm durchdrehen...
Was kann ich nur machen?

AW: UserForm an variable Bildschirmaufloesung anpa
08.10.2007 20:43:21
Herby
Hallo Thomas,
probiers mal mit meiner Musterdatei. Ich selbst habe es jedoch immer nur mit einer Bildschirm-
auflösung probiert. Daher kann ich auch nicht garantieren, dass es funktioniert.
https://www.herber.de/bbs/user/46620.xls
Viele Grüße
Herby

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
09.10.2007 20:48:00
Kalif
Hallo,
also:
@Herby: Ich hab deine Loesung probiert, die funktioniert aber leider net!
@Ramses, Hajo, K.Rola:
Habe jetzt mal folgende Codes zusammengefuegt, die ihr mir geschickt habt:
Fuer die UserForms:

Private Sub UserForm_Initialize()
Me.Zoom = GetSystemMetrics(SM_CXScreen) / X_Resolution * 100
Application.WindowState = xlMaximized
With Me
.Height = Application.Height
.Width = Application.Width
End With
End Sub



Private Sub UserForm_Zoom(Percent As Integer)
Me.Width = Me.Width * Percent / 100
Me.Height = Me.Height * Percent / 100
End Sub


Modul:
Option Explicit
Public Const X_Resolution = 1024
Public Const Y_Resolution = 768
Public Const SM_CXScreen = 0
Public Const SM_CYScreen = 1
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Nun passiert folgendes: Wie ihr wisst, habe ich als Ursprungsaufloesung 1024*768 (x/y = 1,333)
Waehle ich Aufloesungen mit dem gleichen x/y - Faktor, passt alles perfekt! Die UserForms als auch ihre jeweiligen Controls passen sich wie bei meiner urspruenglichen Aufloesung an den Bildschirm an, so wie ich es mir vorstelle!!!
Sollte sich jedoch der x/y - Faktor aendern, habe ich das gleiche Problem wie zuvor!!!
Was koennte ich da anur machen? Ich seh langsam echt den Wald vor lauter Baeumen nicht mehr...
Bin fuer jede Hilfe dankbar!!!
Gruesse

Anzeige
AW: UserForm an variable Bildschirmaufloesung anpa
09.10.2007 21:52:00
K.Rola
Hallo,
wenn das Seitenverhältnis anders als 1:1,33 ist, also z.B. 1:1,25, kann das ohne geringe
Verzerrung nicht funktionieren.
Du musst das eben beim Design des Userforms berücksichtigen und das Userform im
ensprechenden Verhältnis skalieren und den Zoomfaktor auf die relevante Dimension
beschränken.
Gruß K.Rola

AW: UserForm an variable Bildschirmaufloesung anpa
09.10.2007 22:37:07
Kalif
Hi K.Rola,
verstehe ich Dich also richtig, dass ich die ganzen Controls nur so im UserForm ansetzen soll, dass sie mit jeder Aufloesung zu sehen sind? Was meinst Du mit "...das Userform im
ensprechenden Verhältnis skalieren und den Zoomfaktor auf die relevante Dimension
beschränken..."?
Herzlichen Dank fuer Deine Hilfe!!!
Gruesse
Anzeige

24 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige