Thema Datum  Von Nutzer Rating
Antwort
Rot Chart aktualisiert nicht nach dem ändern der Quelldaten per VBA
04.10.2020 11:03:33 Julian
NotSolved
04.10.2020 12:29:14 Gast35017
NotSolved
04.10.2020 12:38:40 Julian
NotSolved
04.10.2020 13:05:24 Gast74874
NotSolved
04.10.2020 14:40:34 Julian
NotSolved
04.10.2020 14:58:42 Gast37263
*
NotSolved
04.10.2020 15:28:41 Gast37263
**
NotSolved
04.10.2020 15:04:28 Gast37263
NotSolved
04.10.2020 15:07:57 Gast37263
NotSolved
04.10.2020 15:10:56 Gast37263
NotSolved
04.10.2020 15:34:41 Gast37263
NotSolved
04.10.2020 15:51:35 Julian
NotSolved
04.10.2020 17:17:23 Gast37263
*****
Solved
04.10.2020 17:39:43 Gast21086
*****
Solved
04.10.2020 18:46:14 Julian
Solved
04.10.2020 19:45:00 Gast37263
NotSolved

Ansicht des Beitrags:
Von:
Julian
Datum:
04.10.2020 11:03:33
Views:
966
Rating: Antwort:
  Ja
Thema:
Chart aktualisiert nicht nach dem ändern der Quelldaten per VBA
Hallo liebe Gemeinde!
Ich kämpfe schon seit längeren mit einem selstamen Problem in Excel, komme aber selbst nicht auf die Lösung.
Folgende Situation:

Ich habe ein Worksheet Names "DAMPER_CURVES". Dort befinden sich zwei Charts, welche beide die gleichen Quelldaten haben.
Die Quelldaten befinden sich ebenfalls auf dem Worksheet wo auch die Charts sind. Ein Chart stellt den Verlauf mit logarithmischer y-Achse dar und der andere Chart macht das mit ganz normalen Achsen. Beide Charts haben eine Trendlinie, welche logischerweise durch die selbe Gleichung beschrieben wird.

Screenshot vom Worksheet:  https://ibb.co/48qk0y2

Ich habe nun eine Funktion geschrieben, mit der ich die Koeffizienten der Trendlinie ermitteln und als Rückgabewert zurückgeben kann. 
Sie wird aber von einem anderen Worksheet aus aufgerufen! Name der Funktion : "GetDamperCurveTrendCoefficients" - siehe unten
Das Problem ist nun, dass die Quelldaten der Charts sich zuerst auf den richtigen Datensatz "curveName" ändern müssen.
Das mache ich mit der Funktion "SetChartData" - siehe weiter unten
Wenn ich jetzt die Trendline abfragen würde, dann würde ich die Trends vom "alten Chart" bekommen also mit dem vorherigen Datensatz. Der Chart aktualisiert sich also nicht nach dem ändern der Quelldaten.

Zufällig habe ich herausgefunden, dass der Chart sich aktualisiert, wenn ich ihn als Bild exportiere. Das Dauert mir aber bei der großen Anzahl an Funktionsaufrufen zu lange und außerdem kommt manchmal die Fehlermeldung, dass der Chart nicht exportiert werden konnte.

Der Chart aktualiert auch, wenn ich das Worksheet wo der chart liegt öffne. realisiere ich dass übrigens mit worksheet.activate dann aktualisiert der Chart nicht!

Die Koeffizienten im Sheet abzuspeichern ist für mich keine Lösung, da sich die Daten immer wieder ändern können. Ich muss also jedes Mal neu abfragen.
Bin über jeden Input dankbar, welcher das Problem beheben könnte!
 


'MODUL XY
Public Const DAMPERCURVES As String = "DAMPER_CURVES"
Public Const damperCurveNormalScaling As String = "normalScaling"
Public Const damperCurveLogarithmicScaling As String = "logarithmicScaling"

Public Function GetDamperCurveTrendCoefficients(ByVal curveName As String, ByVal chartName As String, ByRef coeffA As Double, ByRef coeffB As Double)
    'returns  A and B coefficients by reference of a chart trendline with the form [y = A * exp(B*x)]
    
    Dim currentChart As Chart
    <strong>Dim fName As String 'filename</strong>
    Dim formulaString As String
    Dim splitA() As String
    Dim SplitB() As String
    
    <strong>'save filename
    fName = ThisWorkbook.Path & "\temp.gif"</strong>
    
    'update the chart source data to the curve with the curveName
    Call SetChartData(Worksheets(DAMPERCURVES), curveName, damperCurveNormalScaling, damperCurveLogarithmicScaling) 'Funktion ist weiter unten angehängt
    
    Set currentChart = Worksheets(DAMPERCURVES).ChartObjects(chartName).Chart
    
    currentChart.Export Filename:=fName, Filtername:="GIF" <strong>'chart aktualisiert nur, wenn ich ihn exportiere!!!! WARUM!!!!???</strong>
    
    'get the Trendline formula as string
    formulaString = currentChart.SeriesCollection(1).Trendlines(1).DataLabel.text
    
    'String treatments to get coeffA and coeffB
    splitA = Split(Replace(formulaString, "y = ", ""), "e")
    SplitB = Split(splitA(1), "x")
    
    'RETURN Coefficients
    coeffA = splitA(0) 'return CoeffA
    coeffB = SplitB(0) 'return CoeffB
End Function


Funktion welche den Charts die neuen Quelldaten zuweist

Public Function SetChartData(ByVal Worksheet As Excel.Worksheet, _
                            ByVal curveName As String, _
                            ByVal normalScalingChartName As String, _
                            ByVal logScalingChartName As String)
    'searches for the curveName and updates both charts (normal and logarithmic scaling)
    Dim i As Integer
    Dim chartDataRange As Range
    
    If curveName = "" Then
        Exit Function
    End If
    
    'search for curveName and change Source for Chart-Data
    For i = DAMPER_CURVES_DATA_1stROW To LastUsedRow(Worksheet)
        With Worksheet
            If .Cells(i, 1).value = curveName Then
                Set chartDataRange = .Range(.Cells(i, DAMPER_CURVES_DATA_1stCOL), _
                                            .Cells(i + 1, DAMPER_CURVES_DATA_1stCOL + 29)) 'data range (30 possible data pairs)
                .ChartObjects(normalScalingChartName).Chart.SetSourceData Source:=chartDataRange
                .ChartObjects(logScalingChartName).Chart.SetSourceData Source:=chartDataRange
                Exit Function
            End If
        End With
    Next
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Chart aktualisiert nicht nach dem ändern der Quelldaten per VBA
04.10.2020 11:03:33 Julian
NotSolved
04.10.2020 12:29:14 Gast35017
NotSolved
04.10.2020 12:38:40 Julian
NotSolved
04.10.2020 13:05:24 Gast74874
NotSolved
04.10.2020 14:40:34 Julian
NotSolved
04.10.2020 14:58:42 Gast37263
*
NotSolved
04.10.2020 15:28:41 Gast37263
**
NotSolved
04.10.2020 15:04:28 Gast37263
NotSolved
04.10.2020 15:07:57 Gast37263
NotSolved
04.10.2020 15:10:56 Gast37263
NotSolved
04.10.2020 15:34:41 Gast37263
NotSolved
04.10.2020 15:51:35 Julian
NotSolved
04.10.2020 17:17:23 Gast37263
*****
Solved
04.10.2020 17:39:43 Gast21086
*****
Solved
04.10.2020 18:46:14 Julian
Solved
04.10.2020 19:45:00 Gast37263
NotSolved