Excel Datei per Knopfdruck auf 3 Bildschime "maximieren"

Moeller13

Lt. Commander
Registriert
Sep. 2017
Beiträge
1.289
Hallo zusammen,

ich hatte bis heute morgen 2 Bildschirme angeschlossen. Dann hab ich eben den dritten hinzubekommen.
Ist auch von Vorteil, da ich teilweise extrem breite Excel Dateien bearbeiten muss.

Bisher hatte ich ein kleines Makro laufen, mit dem ich auf Knopfdruck die Mappe über beide Bildschirme gestreckt/maximiert habe oder jeweils nur auf dem linken oder nur auf dem rechten maximiert.
Dies möchte ich jetzt auch gerne für alle drei Bildschirme haben, kann es aber selber nicht programmieren, da ich wenig bis nichts davon verstehe. Das Makro hat mir ein ehemaliger Arbeitskollege gegeben.
Hier das Makro aus VBA
Sub Fenster_beide()
On Error Resume Next
Application.WindowState = xlNormal
Application.Left = 1
Application.Top = 1
Application.Width = 3360
Application.Height = 790

ActiveWindow.WindowState = xlNormal
With ActiveWindow
.Top = 1.75
.Left = 1.75
End With
With ActiveWindow
.Width = 2520
.Height = 760
End With
End Sub


Sub Maxi_links()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1
Application.Top = 1
'Fenster maximieren
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
End Sub

Sub Maxi_rechts()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1300
Application.Top = 1
'Fenster maximieren
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
End Sub

Bisher war meine Aufteilung links Monitor 1, rechts Monitor 2. Die neue Aufteilung ist links Monitor 2, in der Mitte Monitor 1 und rechts Monitor 3. Die Auflösung ist jeweils 1680x1050.

Kann mir einer weiterhelfen wie das zu lösen ist? Gerne auch noch mit der Möglichkeit das auf Links+Mitte und Mitte+Rechts zu schieben (per Knopfdruck).

Vielen Dank im Voraus!
 
eigentlich sollte es recht einfach sein, das Makro zu erweitern:

Ich hab einfach die Subs kopiert und mathematisch angepaßt. statt 3360 muß man ja jetzt noch mal 1680 addieren für die Konfig mit 3 Screens ... "alle3". "Beide Links" und "Beide Rechts" müßte man wie ehemals "links" und "rechts" positionieren. Und letztlich nochmal das "Mitte" als Kopie von "links" oder "rechts". ich hoffe mal, dass das so klappt.

Hinweis: bei der 1300 ganz unten in Mitte und maxi rechts bin ich aber noch nicht druchgestiegen. ich probier mal bei mir mit Full HD rum und knobel das evtl noch raus.
Sub Fenster_alle3()
On Error Resume Next
Application.WindowState = xlNormal
Application.Left = 1
Application.Top = 1
Application.Width = 5040 Application.Height = 790

ActiveWindow.WindowState = xlNormal
With ActiveWindow
.Top = 1.75
.Left = 1.75
End With
With ActiveWindow
.Width = 4200
.Height = 760
End With
End Sub

Sub Fenster_beide_links()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1
Application.Top = 1
Application.Width = 3360 Application.Height = 790

ActiveWindow.WindowState = xlNormal
With ActiveWindow
.Top = 1.75
.Left = 1.75
End With
With ActiveWindow
.Width = 2520
.Height = 760
End With
End Sub

Sub Fenster_beide_rechts()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1
Application.Top = 1
Application.Width = 3360 Application.Height = 790

ActiveWindow.WindowState = xlNormal
With ActiveWindow
.Top = 1.75
.Left = 1.75
End With
With ActiveWindow
.Width = 2520
.Height = 760
End With
End Sub

Sub Maxi_links()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1
Application.Top = 1
'Fenster maximieren
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
End Sub

Sub Maxi_mitte()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1300
Application.Top = 1
'Fenster maximieren
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
End Sub

Sub Maxi_rechts()
On Error Resume Next
'Position bestimmen
Application.WindowState = xlNormal
Application.Left = 1300
Application.Top = 1
'Fenster maximieren
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
End Sub
 
Zuletzt bearbeitet:
Sub Makro_Name()

' Wenn Fehler auftritt: ignorieren und weiter mit der naechsten Zeile.
On Error Resume Next

' Fenster in "normalen", nicht maximierten Zustand versetzen
Application.WindowState = xlNormal

' Position der linken Fensterseite festlegen (in Pixel)
Application.Left = 1

' Position der oberen Fensterseite festlegen (in Pixel)
Application.Top = 1

' Fensterbreite (in Pixel)
Application.Width = 3360

' Fensterhoehe (in Pixel)
Application.Height = 790

' Fenster maximieren
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized

End Sub

Ich hab mal die einzelnen Befehle beschrieben.

Weiter kann ich hier nicht hantieren ...
Meine Vermutung:

Wenn das Fenster sich ueber mehr als 1 Monitor erstreckt und man es anschließend maximiert, wird es ueber beide Monitor maximiert.

Also muss das Makro so aufgebaut sein:
Position und Groeße des Fensters anpassen, dass es ueber die gewuenschten Monitore reicht.
Und anschließend maximieren.

Du muesstest also nur den "Makro_Namen" anpassen (keine Sonderzeichen, darf nicht mit einer Zahl anfangen)
Mit Left das Fenster in den "start" Monitor schieben (0 -> linker Monitor; 1681 -> mittlerer Monitor; usw.)
Die Breite des Fensters festlegen (wird nach rechts gestreckt), so breit waehlen wie Monitore abgedeckt werden sollen.

PS: Pixelangaben muessen nicht genau sein, weil das Fenster sowieso maximiert wird.
 
Zuletzt bearbeitet:
Oder du probierst meine Fensterpflege. Die habe ich zwar noch nicht für 3 Monitore getestet, sollte aber gehen. Da könntest du dann dateiabhängig die Fenstergröße einstellen.
Die Einstellung "Aktuelle Bildschirmgröße berücksichtigen" müsstest du ausschalten.
 
Also die Config von Mega-Bryte passt schonmal ganz gut. Allerdings nur, wenn mein Hauptmonitor der Linke ist. Normalerweise hätte ich aber gerne den mittleren als Hauptmonitor.
Gibt es da ebenfalls eine Möglichkeit?

Ich würde ungern exe-Dateien auf dem Firmenlaptop ausführen. Sorry!
 
Zuletzt bearbeitet:
Meine Exe ist natürlich harmlos, kein Datenabgriff oder Internet. Meine Frau nutzt die Fensterpflege in der Firma. Ist so eine Art Schweizer Taschenmesser fürs Fensterhandling. Ich könnte auch den Quellcode liefern, aber das wird dann kompliziert...
Deine Bedenken verstehe ich aber; ich würde es mir auch dreimal überlegen, eine fremde Exe laufen zu lassen...
 
tausch mal im Makro die Bezeichnungen bei den einzelnen "Links" und "Mitte" aus, danach müßte das klappen
 
Zurück
Oben