@FCS .... vielen Dank für diesen Code (ich baue ihn mal ein und melde mich nochmal).
Gruß und einen schönen Sonntag
Ralph
===========================================
mit nachfolgender Anpassung wird nach einem weiteren Klick auf das Diagramm wieder der vorherige Zoom-Faktor für die Ansicht eingestellt.
Public ZoomFaktor, ChartZoom As Boolean
Sub Charts_ZoomOut()
'Zum Vergrößern einzelner Charts dient das folgende Makro; es erkennt von welchem Chart
'aus es aufgerufen wurde und bringt diesen auf maximale Größe.
'Die Zuordnung des Makros erfolgt über "Rechtsklick im Chartfenster und Makro zuordnen".
If ChartZoom = True Then
ActiveWindow.Zoom = ZoomFaktor
ChartZoom = False
Else
With ActiveSheet.Shapes(Application.Caller)
ActiveSheet.Range(.TopLeftCell, .BottomRightCell).Select
End With
ZoomFaktor = ActiveWindow.Zoom
ActiveWindow.Zoom = True
ChartZoom = True
End If
End Sub
Falls du nicht den Zoom-Faktor für die Ansicht sondern die Größe eines Charts auf bestimmt Werte festlegen willst, dann muss du die Width und Height-Eigenschaft des Charts anpassen.
Nachfolgendes Makro ändert die Größe des Diagramm nach Klick. Bei zweitem Klick wird die vorherige Größe wieder hergestellt. Die Größe des Diagramms orientiert sich dabei an der Größe des aktiven Fensters. Man kann hier natürlich auch eine Feste Breite vorgeben und die Höhe mit dem Faktor berechnen.
Public ChartGross As Boolean, ChartBreite, ChartName As String
Sub Charts_Size()
'Zum Vergrößern einzelner Charts dient das folgende Makro; es erkennt von welchem Chart
'aus es aufgerufen wurde und bringt diesen auf die Größe des aktiven Fensters.
'Die Zuordnung des Makros erfolgt über "Rechtsklick im Chartfenster und Makro zuordnen".
With ActiveSheet.Shapes(Application.Caller)
If ChartGross = True Then
If .Name = ChartName Then
Faktor = .Height / .Width
.Width = ChartBreite
.Height = Faktor * .Width
ChartGross = False
Else
MsgBox "Diagramm: " & ChartName & " wurde noch nicht wieder verkleinert! " & vbLf & vbLf _
& "Bitte erst dieses Diagramm anklicken."
End If
Else
Faktor = .Height / .Width
ChartBreite = .Width
.Width = 0.85 * ActiveWindow.Width '600
If Faktor * .Width > 0.85 * ActiveWindow.Height Then
.Height = 0.85 * ActiveWindow.Height '400
.Width = .Height / Faktor
Else
.Height = .Width * Faktor
End If
.ZOrder msoBringToFront
ActiveWindow.ScrollRow = .TopLeftCell.Row
ActiveWindow.ScrollColumn = .TopLeftCell.Column
ChartName = .Name
ChartGross = True
End If
End With
End Sub
Gruss
Franz