Grüezi Thomas
das Problem mit den abgeschnittenen Spitzen hast Du ja
komplett gelöst, noch dazu sehr schnell.
Danke für die netten Blümchen, ich stelle sie in die virtuelle Vase 
Ich habe heute den
Kopf noch gar nicht frei genug bekommen, um überhaupt
nachzuvollziehen, wie Du das genau gemacht hast …
Gut, dann investiere nicht allzviel Zeit darein, denn ich habe hier eine IMO noch schlankere Lösung gefunden:
Sub tr\_autoDiag2()
Dim Max\_tot As Double
Dim Min\_tot As Double
Dim expo1 As Long
Dim expo2 As Long
ActiveSheet.ChartObjects("Diagramm 3").Activate
ActiveChart.Axes(xlValue).MinorUnitIsAuto = True
ActiveChart.Axes(xlValue).MajorUnitIsAuto = True
ActiveChart.Axes(xlValue, xlSecondary).MinorUnitIsAuto = True
ActiveChart.Axes(xlValue, xlSecondary).MajorUnitIsAuto = True
ActiveChart.Axes(xlValue).MinimumScaleIsAuto = True
ActiveChart.Axes(xlValue).MaximumScaleIsAuto = True
ActiveChart.Axes(xlValue, xlSecondary).MinimumScaleIsAuto = True
ActiveChart.Axes(xlValue, xlSecondary).MaximumScaleIsAuto = True
expo1 = Log(ActiveChart.Axes(xlValue).MaximumScale) / Log(10)
expo2 = Log(ActiveChart.Axes(xlValue, xlSecondary).MaximumScale) / Log(10)
Max\_tot = Round(WorksheetFunction.Max(ActiveChart.Axes(xlValue).MaximumScale / 10 ^ expo1, \_
ActiveChart.Axes(xlValue, xlSecondary).MaximumScale / 10 ^ expo2), 2)
Min\_tot = Round(WorksheetFunction.Min(ActiveChart.Axes(xlValue).MinimumScale / 10 ^ expo1, \_
ActiveChart.Axes(xlValue, xlSecondary).MinimumScale / 10 ^ expo2), 2)
ActiveChart.Axes(xlValue).MaximumScale = Max\_tot \* 10 ^ expo1
ActiveChart.Axes(xlValue).MinimumScale = Min\_tot \* 10 ^ expo1
ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = Max\_tot \* 10 ^ expo2
ActiveChart.Axes(xlValue, xlSecondary).MinimumScale = Min\_tot \* 10 ^ expo2
End Sub
Mit freundlichen Grüssen
Thomas Ramel