Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1696to1700
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

Zoom-Automatik für Diagr.blätt per VBA aktivieren

Zoom-Automatik für Diagr.blätt per VBA aktivieren
07.06.2019 10:26:24
Günther
Grüß Euch,
Ich habe eine Mappe mit Diagramm-Blättern, bei denen ich mit dem automatischen Zoom arbeite.
Sprich im Dialogfenster Zoom die Option "An Markierung anpassen". Dadurch erreicht man, dass Excel das Diagramm immer bildschirmfüllend aber ohne etwas abzuschneiden darstellt. Also wenn man das Menüband ausblendet, vergrößert Excel automatisch den Zoomfaktor, wenn man es wieder einblendet, wieder retour, detto, wenn man die Mappe auf einem anderen PC mit anderer Bildschirmgröße öffnet oder die Fenstergröße des Excel-Programmfensters verändert etc. (nicht zu verwechseln mit dem Menüband Befehl "Zoom|Auswahl vergrößern" der meines Wissens nur für Tabellenbereiche funktioniert.)
Klarerweise geht der automatische Zoom verloren, wenn der Benutzer den Zoomfaktor manuell verändert. Ich will daher per SheetActivate-Ereignis bei jedem Aufruf des Diagrammblatts den automatischen Zoom aktivieren und suche dazu den passenden VBA-Befehl. Aufzeichnen liefert leider nur den Code"ActiveWindow.Zoom = True", welcher dem Befehl "Zoom|Auswahl vergrößern" entspricht, was für Tabellen-Blätter ja auch richtig ist, aber für Diagramm-Blätter eben nicht.
Vielen Dank im voraus für alle Infos!
lg Günther

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zoom-Automatik für Diagr.blätt per VBA aktivieren
07.06.2019 11:21:05
Daniel
HI
wäre es nicht einfacher, jedes Diagramm auf ein eigenes Diagrammblatt zu verschieben?
(Entwurf - Diagramm verschieben Ort - neues Blatt)
dort wird das Diagramm immer Bildschirmfüllend dargestellt.
Das Höhen/Breitenverhältnis richtet sich nach der eingestellten Blattgröße (Seiteneinrtung/Druckeinstellungen).
Gruß Daniel
AW: Zoom-Automatik für Diagr.blätt per VBA aktivieren
07.06.2019 12:15:26
Günther
Grüß Dich Daniel,
Danke für Deine Antwort.
Warum empfiehlst Du mir, die Diagramme auf Diagramm-Blätter zu verschieben, wenn ich doch sowohl im Titel als auch x-Mal im Text ausdrücklich schreibe, dass ich bereits mit Diagramm-Blättern arbeite?
Deine Aussage, Diagramme in Diagramm-Blättern würden immer bildschirmfüllend dargestellt, ist leider nicht zutreffend.
Meine Frage daher noch einmal in Kurzform:
Wie kann ich per VBA den (standardmäßigen) automatischen Zoom auf einem Diagramm-Blatt wieder aktivieren, wenn er dadurch verloren geht, dass der Benutzer den Zoomfaktor manuell verändert (z.B. durch Strg + Drehen am Mausrad)?
lg Günther
Anzeige
AW: Zoom-Automatik für Diagr.blätt per VBA aktivieren
08.06.2019 00:20:12
Daniel
Oh, sorry, da habe ich wohl nicht aufmerksam genug gelesen, sondern nur ein paar Buchstaben angeschaut.
wie man die Automatische Anpassung per Makro aktiviert, weiß ich leider auch nicht.
Aber wenn es wie gewünscht funktioniert, wenn man es von Hand macht, könnte ggf diese Handeingabe über SendKeys simulieren:
Sub Makro1()
SendKeys "%fqa{ENTER}"
End Sub
die Tasten für die Menüsteuerung über Tastatur bekommst du angezeigt, wenn du ALT drückst.
SendKeys ist naturgemäß nicht im Einzelstepmodus testbar, auch muss das Makro über einen Button im jeweiligen Diagrammblatt gestartet werden. (Startest du das Marko mit F5 im Editor oder bist im Einzelstepmodus, wirkt das Sendkeys natürlich auf das aktive Fenster und das ist dann der Editor)
Gruß Daniel
Anzeige
AW: Zoom-Automatik für Diagr.blätt per VBA aktivieren
08.06.2019 10:26:02
Günther
Grüß Dich Daniel,
Danke für den Hinweis, aber die SendKeys-Ansätze sind meistens sehr problembehaftet, weil von sehr vielen Rahmenbedingungen abhängig. Bei meiner Version müsste ich z.B. "%fdoa{Enter}" absetzen. Außerdem funktioniert das nur bei eingeblendetem Menüband. Wenn dieses ausgeblendet ist, müsste man zwischen "%f" und "doa{Enter}" noch ein Warten einbauen etc.
Ich habe mir aber schon eine Lösung zusammengebastelt, die mich einigermaßen zufrieden stellt:
Private Sub Chart_Activate()
Application.EnableEvents = False
ActiveWindow.Zoom = fctDiagrammAutomatikZoomfaktorErmitteln()
Application.EnableEvents = True
End Sub

Function fctDiagrammAutomatikZoomfaktorErmitteln() As Long
Application.ScreenUpdating = False
Charts.Add
fctDiagrammAutomatikZoomfaktorErmitteln = ActiveWindow.Zoom
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Function
Lieber wäre mir natürlich, wenn man den ZoomToFit-Parameter einfach direkt aktivieren kann (siehe anderen Post), aber so geht es auch.
lg Günther
Anzeige
AW: Zoom-Automatik für Diagr.blätt per VBA aktivieren
08.06.2019 11:40:27
Daniel
Hi
das Problem an der Sache ist, dass es keine feste Zoomeinstellung für "automatischen Zoom" gibt, sondern Excel die automatische Zoomanpassung dann aktiviert, wenn der Zoom auf den Wert eingestellt wird, der die vollständige Fensterfüllung ergibt.
dieser Wert ist aber von sehr vielen Faktoren abhängig (Größe des Excelfensters, Seiteneinrichtung des Diagrammblattes, Höhe der Bearbeitungszeile, Menüstatus, Bearbeitungszeilenstatus, Statuszeilenstatus usw) und ich vermute daher, dass dieser Wert nicht irgendwo fest abgelegt ist wo man ihn per VBA abfragen könnte, sondern immer erst bei Bedarf neu berechnet wird.
vielleicht findest du ja in den API-Funktionen etwas, aber damit kenne ich mich nicht aus.
Gruß Daniel
Anzeige
Application.DisplayFullScreen = True? owT
07.06.2019 23:56:56
Toni
...
AW: Application.DisplayFullScreen = True? owT
08.06.2019 10:14:52
Günther
Hallo Toni,
Danke für Deine Antwort. Der Befehl steht aber in keinem Zusammenhang mit meiner Frage.
Diese daher noch einmal in Kurzform:
Wie kann ich per VBA den (standardmäßigen) automatischen Zoom auf einem Diagramm-Blatt wieder aktivieren, wenn er dadurch verloren geht, dass der Benutzer den Zoomfaktor manuell verändert (z.B. durch Strg + Drehen am Mausrad)?
Oder etwas technischer:
Wie kann ich per VBA den View-Parameter "ZoomToFit" wieder auf 1 setzen?
(Siehe angehängte xl\chartsheets\sheetx.xml)
Userbild
lg Günther
Anzeige
AW: Application.DisplayFullScreen = True? owT
08.06.2019 10:46:49
Toni
Hallo Günther,
und
ActiveWindow.Zoom = 100
... liefert bei Dir nicht das gewünschte Ergebnis?
Frage stell ich mal auf offen, vielleicht hat noch jmd. eine Lösung.
lG
Toni
AW: Application.DisplayFullScreen = True? owT
08.06.2019 11:40:24
Günther
Hallo Toni,
der Befehl ActiveWindow.Zoom = 100 setzt den Zoomfaktor auf 100%, was dann fix eingestellt bleibt und nicht laufend angepasst wird.
Wenn, dann sollte der Befehl ActiveWindow.Zoom = true das gewünschte Ergebnis liefern. Das funktioniert aber auf den Diagrammblättern nicht - zumindest bei mir nicht. Es wird ein etwas zu großer Faktor ausgerechnet (z.B. 201 statt 198). Dies führt einerseits dazu, dass der Rand vom Diagramm etwas abgeschnitten wird und andererseits dazu (soweit ich es jetzt verstanden habe), dass das ZoomToFit-Flag nicht gesetzt wird (=die Zoom-Automatik deaktiviert bleibt).
Den einzigen Weg, den ich bis jetzt gefunden habe, das Flag für die Zoom-Automatik zu aktivieren, ist, den passenden Zoomfaktor manuell oder per VBA einzustellen. Excel scheint dann automatisch im Hintergrund das Flag zu setzen und dieses z.B. bei einem Wechsel ins Diagrammblatt zu benutzen, um zu entscheiden, ob der Zoomfaktor automatisch angepasst werden soll oder nicht. Um den passenden Zoomfaktor zu setzen, muss man den gerade aktuellen Wert dafür aber erst einmal kennen. Immerhin verändert der sich ja, wenn man das Menüband ausblendet, die Höhe der Bearbeitungsleiste ändert etc. Manuell ist das nicht so die Herausforderung, da die Option "An Markierung anpassen" im Dialogfenster "Zoom" korrekt funktioniert. Aber per VBA scheint das schwieriger. Mir ist bis jetzt nur die Lösung eingefallen, ein leeres Diagrammblatt neu einzufügen, den Faktor auszulesen und das Blatt wieder zu löschen (siehe function im anderen Post).
Wesentlich erfreulicher wäre es, einen Weg zu finden, der direkt das Flag setzt.
lg Günther
Anzeige
AW: Application.DisplayFullScreen = True? owT
08.06.2019 11:44:59
Günther
nur zum Setzen vom Offen-Flag ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige