Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
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 im Vollbild bei 2 Bildschirmen

Userform im Vollbild bei 2 Bildschirmen
24.11.2016 15:08:26
mpb
Hallo,
in diesem Archivthread hatte ich zu dem Thema schon einmal eine Frage gestellt und auch einen hilfreich Tip bekommen:
https://www.herber.de/cgi-bin/callthread.pl?index=1523620
Nach einer weiteren Recherche habe ich mir nun Folgendes zusammengebastelt, was "halbwegs" funktioniert. Ich möchte jetzt nur verstehen, warum es funktioniert ;-) und den Code ggf. noch etwas erweitern. Hier zunächst der Code:
In einem normalen Modul:
Private Declare PtrSafe Function GetSystemMetrics Lib "USER32" (ByVal nIndex As Long) As Long
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Public Breite
Public Höhe
Public Sub Formular_Vollbild()
Breite = GetSystemMetrics(SM_CXSCREEN)
Höhe = GetSystemMetrics(SM_CYSCREEN)
End Sub
Im Code der Userform:
Private Sub UserForm_Initialize()
Dim sngWidth As Single, sngHeight As Single
Me.StartUpPosition = 0
sngWidth = Me.Width
sngHeight = Me.Height
Me.Left = 0
Me.Top = 0
Me.Height = Höhe * 0.75
Me.Width = Breite * 0.75
Me.Zoom = Fix(WorksheetFunction.Min(Me.Width / sngWidth, Me.Height / sngHeight) * 100)
End Sub
Der Code öffnet die Userform im Hauptbildschirm und zeigt sie im Vollbildmodus an. Soweit ist alles gut. Mir ist nur nicht ganz klar, warum es funktioniert und insbesondere was die Zeile Me.Zoom = ... bewirkt. Vielleicht kann mir ja jemand den Code noch einmal kurz erläutern.
Was ich noch gerne erreichen möchte, ist Folgendes. Wenn Excel geöffnet wird, geschieht das im Hauptbildschirm und das über Workbook_Open geöffnete Formular bedeckt den kompletten Bildschirm. Excel selbst ist nicht mehr sichtbar und für den Anwender nicht mehr zugänglich, und so soll es auch sein. Ziehe ich Excel aber auf den zweiten Bildschirm, wird nach Schließen und Öffnen die Userform auf dem Hauptbildschirm und Excel auf dem zweiten Bildschirm angezeigt. Ich möchte nun erreichen, dass das Formular immer in dem Bildschirm angezeigt wird, in dem auch Excel angezeigt wird. Ich müsste also ermitteln, auf welchem Bildschirm Excel angezeigt wird und dann per Code festlegen, dass auch die Userform in diesem Bildschirm angezeigt werden soll. Wie geht das?
Gruß
Martin

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform im Vollbild bei 2 Bildschirmen
25.11.2016 05:22:32
fcs
Hallo Martin,
hier die Initialisierungsprozedur mit Anmerkungen
'Im Code der Userform:
Private Sub UserForm_Initialize()
Dim sngWidth As Single, sngHeight As Single
Me.StartUpPosition = 0 'legt fst, dass die osition des des Userfoms beliebig festgelegt werden  _
kann
'Breite und Höhe des Userforms merken, die im VBA-Formular-Editor festgelegt wurden
sngWidth = Me.Width
sngHeight = Me.Height
'Userform in der linken oberen Ecke des Bildshirms positionieren
Me.Left = 0
Me.Top = 0
'Userform auf Größe des Bildschirms vergrößern, 0,75 ist der Umrechnungsfaktor die Einheit der  _
_
Bildschirmgröße (Pixel) in die Einheit UF-Abmessungen (Punkt)
Me.Height = Höhe * 0.75
Me.Width = Breite * 0.75
'Steuerelemente proportionla skalieren ( hier vergrößeren). Dabei wird der kleinere Wert _
des Verhältnisses Breite UF zu ursprünglicher UF-Breite bzw. von Höhe UF zu ursprüngliche _
UF-Höhe als Faktor verwendet
Me.Zoom = Fix(WorksheetFunction.Min(Me.Width / sngWidth, Me.Height / sngHeight) * 100)
End Sub

Das Excel-Anwendungsfenster kannst du vor der Anzeige des Userforms minimieren und danach wieder anzeigen.
'Code unter DieseArbeitsmappe
Private Sub Workbook_Open()
Dim lngWindowstate As Long
Call Formular_Vollbild
lngWindowstate = Application.WindowState 'aktuellen Status merken
Application.WindowState = xlMinimized
UserForm1.Show
Application.WindowState = lngWindowstate
End Sub

Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige