Chart Layout Failed
20.05.2016 12:56:18
Horst
Derzeit arbeite ich einem grösseren Excel-Projekt mit ungefähr 20 Grafiken und 1000 Datenreihen. Die Grafiken werden mittels DropDown-Menü und VBA gesteuert (Range verändert, etc.).
Einige Liniendiagramme benutzen dafür eine Funktion "AlterLineChart". Die Funktion schrieb ich vor 2 Wochen und arbeitete täglich mit diesen DropDowns - ohne Probleme. Gestern morgen wollte ich mich wieder an die Arbeit machen und ich erhielt folgende Fehlermeldung:
1. Run-time error '1004': Chart Layout Failed
(Ich markiere die Stelle im Code.)
* Wenn ich die besagte Stelle auskommentiere, funktioniert der Code.
* Im Debug-Modus hat .PlotArea.Width den Wert -7.8740157480315E-05 ODER
* Ich habe versucht mit einer Wait-Funktion sicherzustellen, dass Excel genügend Zeit hat, um das Ganze durchzurechnen. Ohne Erfolg.
* Wenn ich den besagten Graphen ersetze, funktioniert der Code wieder, bleibt allerdings am nächsten Morgen wieder bei einem anderen hängen.
Und wie gesagt: Das Ganze funktionierte einwandfrei während mehr als zwei Wochen. Was ich geändert habe? An dieser Funktion nichts. Ein paar zusätzliche Charts und ein Add-In zum Bereinigen von leeren Zellen. das Add-In habe ich deaktiviert und komplett vom Rechner gelöscht.
Der Chart der den Fehler meist verursacht ist auch bereits seit zwei Wochen eingebaut.
Ich danke euch!
Gruss
Horst
Sub AlterLineChart(sChartName As String, iCollection As Integer, sYValues As String, sXValues _
As String, sName As String, dWeight As Double _
sLineStyle As String, cColor As Long, dTransparency As Double _
dMaximum As Double, dChartAreaX As Double, dChartAreaY As Double _
dPlotAreaX As Double, dPlotAreaY As Double)
Transparency, Maximum and Size
Dim oChtObj As Chart
Dim oSeries As Series
Set oChtObj = ActiveSheet.ChartObjects(sChartName).Chart
If oChtObj.SeriesCollection.Count ' Manchmal gibt es bereits hier (SetElement) einen DIV/0 Fehler...
' Tritt sporadisch mit dem anderen Fehler auf.
oChtObj.SetElement (msoElementPrimaryValueGridLinesMinorMajor)
With oChtObj
.ChartArea.height = dChartAreaY
.ChartArea.width = dChartAreaX
' Ab hier beginnen die regelmässigen Fehler
.PlotArea.width = dPlotAreaX
.PlotArea.height = dPlotAreaY
.PlotArea.Top = 0
.PlotArea.Left = (.ChartArea.width - .PlotArea.width) / 2
' Ende Fehler
With .Axes(xlValue)
If dMaximum = 0 Then
.MaximumScaleIsAuto = True
Else
.MaximumScale = dMaximum
End If
.MinimumScale = 0
End With
End With
Set oSeries = Nothing
Set oChtObj = Nothing
End Sub