538 Aufrufe
Gefragt in Tabellenkalkulation von joel-hirschispt-net Einsteiger_in (18 Punkte)
Hallo Zusammen

Hat jemand schon Erfahrung damit ein Userform in VBA im Vollbildmodus zu starten? Wenn ja, funktioniert dies einigermassen gut? Wie ist das möglich?

Ich habe schon ein paar Dinge ausprobiert aber noch nicht die ideale Lösung gefunden.

Vielen Dank für eure Hilfe.

Liebe Grüsse
Joel Hirschi

7 Antworten

0 Punkte
Beantwortet von m-o Profi (18.1k Punkte)

Hallo Joel,

es wäre interessant zu erfahren, was du schon ausprobiert hast.

Mit den folgendem Code wird die Userform im Vollbildmodus und zentriert gestartet:

Private Sub UserForm_Activate()

'Vollbildmodus
Me.Height = Application.Height
Me.Width = Application.Width

'zentriert
Me.Left = (Application.Width - Me.Width) / 2
Me.Top = (Application.Height - Me.Height) / 2

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von joel-hirschispt-net Einsteiger_in (18 Punkte)

Hallo M.O.

Vielen Dank für deine schnelle Antwort.

In verschiedenen Foren habe ich bereits Codes mit "Application.Height / Application.Width" gesehen. Ausserdem habe ich noch mit der StartUpPosition gespielt.

Dein Code funktioniert soweit so gut - aber es ist noch nicht genau das, was ich gerne haben möchte. Wenn du ein beliebiges Fenster (z.Bsp. den Browser) in den Vollbildmodus stellst, passt es sich ja schön den Rändern sowie der Taskleiste an. Ist es überhaupt möglich dies mit der Userform in VBA zu tun oder muss ich die Programmiersprache wechseln?

Liebe Grüsse
Joel

+1 Punkt
Beantwortet von m-o Profi (18.1k Punkte)

Hallo Joel,

dann vielleicht so:

Der folgende Code ist in ein allgemeines Modul zu kopieren:

Option Explicit

Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1

In den Code der Userform dann dieser Code:

Private Sub UserForm_Initialize()

Me.Left = 0
Me.Top = 0
Me.Height = GetSystemMetrics(SM_CYSCREEN) * 0.75
Me.Width = GetSystemMetrics(SM_CXSCREEN) * 0.75

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von joel-hirschispt-net Einsteiger_in (18 Punkte)
Funktioniert schonmal gut. Jetzt kommt die eigentliche Herausforderung: Die Userform soll sich nun dynamisch je nach Auflösung anpassen. Das heisst, je nach Auflösung alles grösser oder kleiner skalieren.

Was meinst du, ist das möglich?

Liebe Grüsse
Joel
0 Punkte
Beantwortet von m-o Profi (18.1k Punkte)

Hallo Joel,

hast du den Code schon einmal bei anderen Auflösungen ausprobiert?wink

Gruß

M.O.

0 Punkte
Beantwortet von joel-hirschispt-net Einsteiger_in (18 Punkte)

Hallo M.O.

Jap, habe den Code auf meinem Surface ausprobiert und es hat nicht funktioniert.wink

Im übrigen wird auch die App an sich nicht skaliert. Im Visual Studio wird beim Vollbild alles passend skaliert, nur VBA will das irgendwie nicht tun.

Liebe Grrüsse
Joel

0 Punkte
Beantwortet von m-o Profi (18.1k Punkte)

Hallo Joel,

der Code sollte eigentlich die Auflösung des Monitors auslesen und die Userform entsprechend skalieren. Bei meinem PC funktioniert das - auch mit verschiedenen Auflösungen.

Warum das bei dem Surface nicht klappt kann ich leider nicht sagen sad.

Gruß

M.O.

...