web-dev-qa-db-de.com

Diagramm wird in Excel nicht aktualisiert (2007)

Ich habe ein Excel-Dokument (2007) mit einem Diagramm (gruppierte Spalte), das seine Datenserie aus Zellen erhält, die berechnete Werte enthalten

Die berechneten Werte ändern sich nie direkt, sondern nur, wenn sich andere Zellen im Blatt ändern

Wenn ich andere Zellen im Arbeitsblatt ändere, werden die Datenserienzellen neu berechnet und zeigen neue Werte an. Das auf dieser Datenreihe basierende Diagramm weigert sich jedoch, die Aktualisierung automatisch durchzuführen

Ich kann das Diagramm aktualisieren, indem Sie es speichern/schließen oder eine der Einstellungen umschalten (z. B. X/Y-Achse umkehren und dann zurücksetzen) oder die Datenserie erneut auswählen

Jede Lösung, die ich online gefunden habe, funktioniert nicht

  • Ja, ich habe die Berechnung auf Automatisch gesetzt
  • Strg + Alt + F9 aktualisiert alles in Ordnung, AUSSER dem Diagramm
  • Ich habe das Diagramm mehrmals und auf verschiedenen Computern neu erstellt
  • Ich habe VBA-Skripte ausprobiert:

    Application.Calculate
    Application.CalculateFull
    Application.CalculateFullRebuild
    ActiveWorkbook.RefreshAll
    DoEvents 

Keines davon aktualisiert oder aktualisiert das Diagramm

Ich stelle fest, dass ich, wenn ich über meine Data Series tippe, tatsächliche Zahlen anstelle von Berechnungen tippe, das Diagramm aktualisiert - es ist, als ob Excel Änderungen in den Berechnungen nicht erkennen möchte

Hat jemand dies bereits erlebt oder weiß ich, was ich tun könnte, um das Problem zu beheben? Vielen Dank

18
samJL

Ich bin auf das gleiche Problem gestoßen - nicht sicher, warum - und wenn es passiert, habe ich das Diagramm nur dann dazu gezwungen, ein Update zu erzwingen, indem Sie etwas in der Diagrammdefinition selbst ändern.

Dim C As ChartObject: Set C = Me.ChartObjects("chart name")
C.Chart.ChartTitle.Text = C.Chart.ChartTitle.Text + "1"

Möglicherweise gibt es eine bessere Antwort, die dem Problem auf den Grund geht - aber ich dachte, das könnte helfen. Beim Bearbeiten des Blattes würde ich eine schnelle Strg-X-Strg-V für einen Teil des Diagramms (oder das Ganze) ausführen, um das Aktualisieren des Diagramms zu erzwingen.

4
tpascale

Dies ist das einzige, was ich gefunden habe, um ein Diagramm konsequent zu aktualisieren. Es geht um die Ursache des Problems (ich gehe davon aus): Die Seriendaten werden im Diagramm zwischengespeichert. Wenn Sie das Diagramm zwingen, die Serie erneut auszuwerten, leeren wir den Cache.

' Force the charts to update
Set sht = ActiveSheet
For Each co In sht.ChartObjects
    co.Activate
    For Each sc In ActiveChart.SeriesCollection
        sc.Select
        temp = sc.Formula
        sc.Formula = "=SERIES(,,1,1)"
        sc.Formula = temp
    Next sc
Next co
12
Jason

Ich hatte dieses Problem beim Generieren von 1000+ Graphen durch VBA. Ich habe die Grafiken generiert und ihren Serien einen Bereich zugewiesen. Wenn das Blatt neu berechnet wurde, wurden die Diagramme jedoch nicht aktualisiert, da sich die Werte der Datenbereiche geändert haben.

Lösung -> Ich habe WrapText vor der For ... Next-Schleife, die die Grafiken generiert, ausgeschaltet und nach der Schleife wieder eingeschaltet.

Workbooks(x).Worksheets(x).Cells.WrapText=False 

und danach...

Workbooks(x).Worksheets(x).Cells.WrapText=True

Dies ist eine großartige Lösung, da über 1000 Diagramme gleichzeitig aktualisiert werden, ohne dass sie alle durchlaufen und einzeln geändert werden müssen.

Ich bin mir auch nicht wirklich sicher, warum das funktioniert. Ich nehme an, wenn WrapText eine Eigenschaft des Datenbereichs ändert, wird das Diagramm aktualisiert, obwohl ich dazu keine Dokumentation habe. 

4
João

Ich hatte das gleiche Problem mit einem einfachen Kreisdiagramm. 

Keines der Makros funktionierte, das ich versuchte. In cut, pasting, relocating hat nichts funktioniert. 

Die gefundene Problemumgehung bestand darin, den Diagrammtext zu bearbeiten, die Beschriftungen zu entfernen und die Beschriftungen erneut auszuwählen. Sobald sie wieder auftauchten, wurden sie aktualisiert.

4
pb33

Dies ist ein absurder Fehler, der meine Arbeit mit Excel erheblich behindert. 

Basierend auf den Workarounds kam ich zu den folgenden Aktionen als der einfachste Weg, um voranzukommen ...

Klicken Sie auf das Diagramm, das Sie aktualisieren möchten. Wählen Sie STRG-X, STRG-V, um das Diagramm auszuschneiden und an der richtigen Stelle einzufügen.

3
Marc

Das funktioniert sehr gut für mich - es dreht Achsen in allen Diagrammen und dreht sie dann zurück, was bewirkt, dass sie ohne Änderung aktualisiert werden.

'Refresh all charts
For Each mysheet In ActiveWorkbook.Sheets
    mysheet.Activate
    For Each mychart In ActiveSheet.ChartObjects
        mychart.Activate
        ActiveChart.PlotArea.Select
        ActiveChart.PlotBy = xlRows
        ActiveChart.PlotBy = xlColumns
        ActiveChart.PlotBy = xlRows
    Next
Next
2
Sam

Dies ist ein bekannter Excel-Fehler ...

Der beste und schnellste Workaround ist der Columns.AutoFit - Trick:

Sub Update_Charts()
    Application.ScreenUpdating = False
    Temp = ActiveCell.ColumnWidth
    ActiveCell.Columns.AutoFit
    ActiveCell.ColumnWidth = Temp
    Application.ScreenUpdating = True
End Sub
2
Porsche9II

Ich stand vor demselben Problem. Die Ausgabe ist aufgrund der Einschränkung in Nr. von berechneten Formeln in Ihrem Arbeitsblatt. Sie können es auf zwei Arten lösen:

Manuelle Kraft neu berechnen:

Press SHEFT + F9

Makro, um eine Neuberechnung zu erzwingen: Fügen Sie den folgenden Code am Ende der Funktion hinzu, wodurch die Daten geändert werden

Activesheet.Calculate

Ich habe die Lösung dafür gefunden: Vergewissern Sie sich, dass Sie in Excel die Berechnungsoptionen wie folgt ändern. Es wurde manchmal nach manueller Arbeit in Excel in manuell geändert.

Auto Calculation

2
Ayman Al-Absi

Ich habe ein anderes Problem, Diagramme neu zu gestalten. Bei der automatischen Generierung der Diagramme werden einige Diagramme über dem Blatt angezeigt und zwischengespeichert. Es ist ein Problem, dass die generierten Diagramme aktualisiert werden. Wenn ich die Ansicht vergrößern oder verkleinern, kann ich die erwarteten Ergebnisse erhalten. Also poste ich die Lösung hier, wenn es jemanden interessiert .. Programmgesteuert habe ich dies nach dem Generieren von Diagrammen hinzugefügt:

ActiveWindow.Zoom = ActiveWindow.Zoom + 1
ActiveWindow.Zoom = ActiveWindow.Zoom - 1
2
toan

Ok, ich habe wirklich eine Lösung ....

Ich habe festgestellt, dass das Problem, dass meine Diagramme nicht zuerst aktualisiert wurden, kurz nachdem ich einige Datenspalten ausgeblendet hatte, die in das Diagramm eingespeist wurden, und das Kontrollkästchen "in Zeilen und Spalten ausgeblendete Daten anzeigen" im Feld "Datenquelle auswählen" des Diagramms markiert hat. 

Ich fand heraus, dass, wenn ich wieder in das msg-Feld "Datenquelle auswählen" gegangen bin und das Kontrollkästchen "in Zeilen und Spalten ausgeblendete Daten anzeigen" nicht aktiviert/überprüft habe, das das Diagramm aktualisiert.

Programmatisch habe ich folgendes in ein Makro eingefügt, mit dem ich eine Schaltfläche verknüpft habe. Alle Diagramme werden so schnell aktualisiert, dass ein bekannter Fehler behoben werden kann. Dieser Code setzt ein Diagramm pro Arbeitsblatt voraus, ein weiteres Diagramm für die Anweisungen für die Diagramme 1 bis N kann jedoch hinzugefügt werden, wenn dies gewünscht wird:

Sub RefreshCharts()

    Application.ScreenUpdating = False

For I = 1 To ActiveWorkbook.Worksheets.Count

Worksheets(I).Activate

    ActiveSheet.ChartObjects("Chart 1").Activate

    ActiveChart.PlotVisibleOnly = True

    ActiveChart.PlotVisibleOnly = False

Next I

    Application.ScreenUpdating = True

End Sub
1
user3063819

Dieses Problem ist lächerlich! Für 2010 hat keine Lösung für mich funktioniert, aber ich habe meine von tpascale übernommen:

Dim C As ChartObject
Set C = ActiveSheet.ChartObjects("CTR_Chart")
C.Chart.SetSourceData Source:=Range( _
    "KeywordBreakdown!$A$8:$A$12,KeywordBreakdown!$E$8:$E$12")

Einfach den Quelldatenbereich neu definieren. Wenn es sich um einen benannten Bereich handelt, könnte dies denkbar sauber sein. Ich denke, die beste Lösung dafür ist, ständig andere Diagrammeigenschaften zu ändern, bis sie aktualisiert wird.

1

Ich hatte dieses Problem und fand heraus, dass zwei Excel-Anwendungen gleichzeitig ausgeführt wurden. Wenn ich alles geschlossen habe und nur die Datei geöffnet habe, hatte ich Probleme mit den Diagrammen, die so dynamisch waren wie sie sein sollten. Vielleicht hilft das

1
Greg

Wir haben eine Lösung gefunden, die kein VBA beinhaltet: Multiplizieren eines Elements des Datenbereichs des Diagramms mit TODAY()-TODAY()+1.

Auch wenn der Bereich ohne diese Neuberechnung neu berechnet wurde, verleiht ihm die Unbeständigkeit von TODAY() irgendwie einen zusätzlichen Schub, der die Chart-Neuberechnung auslöst.

1
vjp07042

Ab Excel 2013 gibt es die Chart.Refreh-Methode ( https://msdn.Microsoft.com/de-de/library/office/ff198180.aspx ).

Dim cht As ChartObject
For Each cht In ThisWorkbook.ActiveSheet.ChartObjects
    cht.Chart.Refresh
Next cht    
1
DaveD

Dies funktionierte für mich, es schneidet die Diagramme im aktiven Arbeitsblatt und fügt sie erneut ein. Ich stützte mich auf Jasons Code und einen Blog-Beitrag fand ich in einer schnellen Google-Suche. 

Sub RepasteCharts()

Dim StrTemp As String
Dim IntTempTop As Integer
Dim IntTempLeft As Integer


Set sht = ActiveSheet

For Each co In sht.ChartObjects
    'Activate the chart
    co.Activate

    'Grab current position on worksheet
    IntTempTop = ActiveChart.Parent.Top
    IntTempLeft = ActiveChart.Parent.Left

    'Cut and paste
    ActiveChart.Parent.Cut
    ActiveSheet.Paste

    'Reposition to original position
    ActiveChart.Parent.Top = IntTempTop
    ActiveChart.Parent.Left = IntTempLeft
Next co


End Sub
1
Ryan Bradley

Da ich so ziemlich ALLE der vorgestellten Lösungen ausprobierte und da in meinem Fall keine funktionierte, füge ich hier meine zwei Cent hinzu. Hoffentlich hilft es jemand anderem.

Der Konsens in dieser Frage scheint zu sein, dass wir Excel zwingen müssen, das Diagramm neu zu zeichnen, da dies nicht der Fall ist, wenn es sollte.

Meine Lösung bestand darin, die X-Axis-Daten zu töten und durch nichts zu ersetzen, bevor sie an das gewechselt wurden, was ich wollte. Hier mein Code:

With wsReport
    .Activate
    .ChartObjects(1).Activate
    ActiveChart.FullSeriesCollection(1).XValues = "=" 'Kill data here
        .Range("A1").Select 'Forwhatever reason a Select statement was needed
        .ChartObjects(1).Activate
        ActiveChart.FullSeriesCollection(1).XValues = "=tblRef[Secs]"
End With
End Sub
0
rohrl77

Wenn Sie die Berechnung zuerst deaktivieren und dann wieder aktivieren (z. B. für das aktive Arbeitsblatt), wurde das Problem gelöst:

ThisWorkbook.ActiveSheet.EnableCalculation = False
ThisWorkbook.ActiveSheet.EnableCalculation = True

Eventuell zweimal hintereinander ausführen. Alle Diagramme im Arbeitsblatt werden vollständig aktualisiert.

0
DaveD

Ich habe selbst einen halben Tag damit verbracht.

Ich habe ein Makro, das Werte ändert, die die Daten für ein Diagramm sind. Alles funktionierte in Excel 2003 einwandfrei, aber in Excel 2007 schien das Diagramm die Verbindung zu seinen Daten zu verlieren, obwohl das manuelle Ändern von Datenwerten in zwei Spalten eine Neuberechnung auslöste.

Meine Lösung bestand darin, alle Diagramme auf der aktiven Tabelle vor der Änderung der Daten unsichtbar zu machen, sie dann wieder sichtbar zu machen und die Diagrammaktualisierung für ein gutes Maß aufzurufen. (Es scheinen nur sichtbare Diagramme zu sein, bei denen dieses Problem aktualisiert wird).

Dies funktioniert für mich und behandelt ähnliche Probleme sowohl mit Diagrammen als auch mit Diagrammobjekten. Die Aktualisierung ist möglicherweise nicht erforderlich. Weitere Tests sind erforderlich.

Dim chrt As Chart
Dim chrtVis As XlSheetVisibility
Dim sht As Worksheet
Dim bChartVisible() As Boolean
Dim iCount As Long

Dim co As ChartObject

On Error Resume Next

Set chrt = ActiveChart

If Not chrt Is Nothing Then
        chrtVis = chrt.Visible
        chrt.Visible = xlSheetHidden
        End If

Set sht = ActiveSheet

If Not sht Is Nothing Then
        ReDim bChartVisible(1 To sht.ChartObjects.Count) As Boolean
        iCount = 1
        For Each co In sht.ChartObjects
            bChartVisible(iCount) = co.Visible
            co.Visible = False
            iCount = iCount + 1
            Next co
        End If

DO MACRO STUFF, DASS DATEN ÄNDERN  

If Not sht Is Nothing Then
        iCount = 1
        For Each co In sht.ChartObjects
            co.Visible = bChartVisible(iCount)
            co.Chart.Refresh
            iCount = iCount + 1
        Next co
        End If

If Not chrt Is Nothing Then
        chrt.Visible = chrtVis 
        chrt.Refresh
        If chrt.Visible Then
            chrt.Select
            End If
        End If

On Error GoTo 0
0
Tim Read

Beim Ändern der Werte der Quelldaten wurde das Diagramm nicht entsprechend aktualisiert. Gerade alle Instanzen von Excel geschlossen und neu gestartet, Problem ist verschwunden.

0
bharat1010

Ich hatte heute ein ähnliches Problem mit einer 2010-Datei mit einer großen Anzahl von Formeln und mehreren Datenbankverbindungen. Die Diagrammachse, die die Referenzen nicht aktualisiert hat, reicht mit ausgeblendeten Spalten (ähnlich wie in dieser Kette) und die Beschriftungen zeigen den Monat und das Jahr "MMM-YY" der dynamischen Daten an. Ich habe alle aufgeführten Lösungen mit Ausnahme der VBA-Optionen ausprobiert, da ich es vorziehen würde, sie ohne Code zu lösen.

Ich konnte die Probleme lösen, indem ich meine Datumsangaben (die Achsenbeschriftungen) in einer TEXT-Formel als solche einkapselte: = TEXT (A10, "MMM-YY"). Und alles ändert sich sofort, wenn sich die Werte ändern. Glückliche Tage wieder !!! 

Nachdem ich die oben genannten Probleme der Mitwirkenden gelesen hatte, begann ich zu denken, dass die Diagramme speziell mit dem Datentyp DATE Probleme hatten. Daher konvertierte ich die Werte mit der TEXT-Funktion in Text. Hoffentlich kann dir das auch helfen. Ändern Sie einfach das Format in den doppelten Anführungszeichen (zweites Argument der TEXT-Funktion) entsprechend Ihren Anforderungen.

0
Daniel_DeHaven

Meine zwei Cents für dieses Problem: Ich hatte ein ähnliches Problem mit einem Diagramm in einem Access 2010-Bericht. Ich habe dynamisch ein Querydef erstellt, das als Zeilenquelle in meinem Bericht festgelegt und dann versucht, die einzelnen Reihen zu durchlaufen und die Eigenschaften der einzelnen Reihen festzulegen. Was ich schließlich tun musste, war, die querydef-Erstellung und die Eigenschaftseinstellung in separate Unterprogramme aufzuteilen. Zusätzlich stelle ich ein 

SendKeys ("{DOWN}")
SendKeys ("{UP}")

am unteren Rand jedes der beiden U-Boote. 

0
nwhaught

Ich hatte das gleiche Problem beim Durcharbeiten eines Tutorials (sehr frustrierend, wenn Sie den Schritten folgen und nicht das erwartete Ergebnis erhalten).

Das Lernprogramm zum Erstellen eines Kreisdiagramms sah vor, dass ich den Bereich A3:A10 und dann den nicht benachbarten Bereich E3:E10 auswählen sollte. Ich habe es so gemacht. Ich habe die Tabelle bekommen.

Daraufhin wurde ich aufgefordert, einen Wert zu ändern und die prozentuale Änderung zu beobachten, dann das Kreisdiagramm anzusehen und die Aktualisierung zu sehen.

Es wurde nicht aktualisiert.

Ich schaute auf die Datenquelle für das Kreisdiagramm und die Reichweite war bizarr. Der A3:A10-Bereich wurde ordnungsgemäß notiert, die E10-Zellenreferenz wurde jedoch mehrmals wiederholt und alle E-Zellen wurden in zufälliger Reihenfolge aufgelistet. Es sah aus wie 

=SERIES(,(Revenue!$A$3:$A$10,Revenue!$E$3,Revenue!$E$10,Revenue!$E$10,Revenue!$E$10,Revenue!$E$10,Revenue!$E$10,Revenue!$E$9,Revenue!$E$8,Revenue!$E$7,Revenue!$E$6,Revenue!$E$5,Revenue!$E$4),1

Ich habe die Datenquelle zu lesen geändert:

=SERIES(,Revenue!$A$3:$A$10,Revenue!$E$3:$E$10,1)

Problem gelöst. Manchmal muss der Code aufgeräumt werden, sodass der Berechnungsprozessor weniger zu sortieren hat.

0
JBeez

Aktivieren Sie einfach das Blatt, in dem sich das Diagramm befindet:

Sheets(1).Activate

und dein Problem verschwindet. 

Ich hatte das gleiche Problem und keines der Dinge, die Sie in Frage stellten, funktionierte für mich, bis ich gerade das Blatt aktivierte. Die akzeptierte Antwort funktionierte bei mir auch nicht. 

Alternativ können Sie machen:

ActiveCell.Activate
0

Ich hatte gerade das gleiche Problem und stellte auch fest, dass die Zeile nur angezeigt wird, wenn ich falsche Daten eingebe (Zeichen statt Zahlen). Dies führte dazu, dass die Zeile angezeigt wurde. Durch das Zurücksetzen auf gültige Daten verschwand sie jedoch wieder. 

Was ich gefunden habe, ist, dass ich, wenn ich auf die Linie geklickt habe (mit schlechten Daten), sie mir aus irgendeinem Grund auf der SECONDARY-Achse zeigte. Das Ändern auf die Achse PRIMARY löste mein Problem.

0
Mac_Biodiesel

Ich habe auch mit diesem Problem zu kämpfen. Schließlich wurde es gelöst, indem das Blatt mit den Diagrammdaten neu berechnet wurde, nachdem die benutzerdefinierte Funktion neu berechnet wurde. In Blatt 1 habe ich also eine Zelle, die enthält

=ComputeScore()

Im VBA-Modul ist die Funktion als flüchtig definiert, um sicherzustellen, dass ComputeScore () nach Aktualisierungen der Kalkulationstabelle ausgeführt wird.

Function ComputeScore() As Double
    Application.Volatile True
    . . . do some stuff to get a total . . .
    ComputeScore = theTotal
End Function

Dann in der VBA von Blatt 1:

Private Sub Worksheet_Calculate()
    'Recalculate the charts data page to force the charts to update.
    'Otherwise, they don't update until the next change to a sheet, and so
    'chart data is always one update behind the user's data changes.
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlManual
    Sheets("Charts Data").Calculate
    Application.Calculation = xlAutomatic
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Das Blatt namens Charts Data, das auf die benutzerdefinierte Funktionszelle von Blatt 1 verweist, führt also eine Neuberechnung durch, nachdem die ComputeScore () - Funktion die Zelle von Blatt 1 aktualisiert hat, da Worksheet_Calculate () nach der Neuberechnung von ComputeScore () ausgelöst wird. Diese zusätzliche Berechnungsrunde der Diagrammdaten führt dazu, dass das Diagramm jetzt aktualisiert wird und nicht später oder überhaupt nicht. Die Einstellung von EnableEvents und xlManual verhindert das Auftreten von Endlosschleifen und anderen Ereignisproblemen.

0
RealHandy

Ich hatte letzte Woche das gleiche Problem mit meiner Arbeit, als ich meinem Arbeitsblatt weitere Berechnungen hinzufügte. Danach wurden die Diagramme nicht mehr mithilfe von Optionsfeldern zur Darstellung von Daten für Diagramme aktualisiert. 

Die beste Erklärung, die ich bisher finden konnte, ist folgende: http://support.Microsoft.com/kb/243495

Wenn ich es richtig verstanden habe und wenn es mehr als 65536 Formeln gibt, die eine andere Zelle als Referenz in Ihrer Datei enthalten, beginnt Excel mit der Optimierung der Berechnung und in einigen Fällen werden Diagramme nicht mehr richtig aktualisiert.

Wenn es hierfür eine Problemumgehung gibt, ohne VBA-Makros zu verwenden, würde ich mich freuen zu hören (diese können nicht verwendet werden, da die Dateien über SharePoint ohne VBA-Makros freigegeben werden müssen).

0
Vesa Siltanen

Ich hatte die gleiche Ausgabe wie das Poster. Im Grunde führe ich ein Dashboard aus, und ich habe eine Reihe benannter Bereiche, die mit Rückgabewerten einiger UDFs gefüllt sind. Auf dem Dashboard gibt es einige Kreisdiagramme mit Datenserien, die an Zellen gebunden sind, die diese benannten Bereiche enthalten (das Problem tritt auch auf, wenn die Zielzellen der Datenserien die UDFs direkt enthalten und die benannten Bereiche umgehen).

Ich ändere einen Zellenwert, der z. B. den Datumsbereich enthält, auf dem das Dashboard basiert, und die genannten Bereiche und UDFs werden zur Berechnung gezwungen. Die Kreisdiagramme werden jedoch nicht aktualisiert - aus anderen Gründen auch bei anderen Diagrammtypen. Übrigens sind dies Diagrammobjekte, keine Diagrammblätter. Lass uns auf die Lösung gehen:

Ich wollte den Chart-Titel oder einen anderen Aspekt nicht sichtbar ändern, und ich habe trotzdem bemerkt, dass dies meine Charts nicht ständig aktualisiert hat. Wenn ich die Berechnung zum ersten Mal auslöste, wurden die Pies manchmal aktualisiert, bei nachfolgenden Berechnungen jedoch nicht. Ich bemerkte jedoch, dass jedes Mal, wenn ich den Code änderte, mein Dashboard funktionierte. Somit:

Lösung:

With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

     .AddFromString "'test"
     .DeleteLines 1

End With

Wenn Sie das Arbeitsbuchmodul verwenden (ich war in diesem Fall nicht), erstellen Sie einfach ein neues Modul und verweisen Sie stattdessen darauf.

0
Matt M

Bei mir hat das Makro nicht die x-Achse für alle Serien aktualisiert, sondern nur die erste. Die Lösung, die ich fand, bestand darin, die x-Achse für alle Serien zu aktualisieren und dann erneut zu veröffentlichen (auch ich hatte Code, um das Format der x-Achse zu ändern, aber ich glaube nicht, dass dies das Problem war).

ActiveSheet.ChartObjects("Diagram 7").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.SeriesCollection(1).XValues = "={""""}"
ActiveChart.SeriesCollection(1).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(2).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(3).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(4).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(5).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(6).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(7).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(8).XValues = "=YYY!$BQ$85:$BQ$8844"

Volles Makro;

Sub TEST()
'
' TEST Makro
'
ActiveSheet.ChartObjects("Diagram 7").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "@"
ActiveSheet.ChartObjects("Diagram 7").Activate
ActiveChart.SeriesCollection(1).XValues = "={""""}"
ActiveChart.SeriesCollection(1).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(2).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(3).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(4).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(5).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(6).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(7).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.SeriesCollection(8).XValues = "=YYY!$BQ$85:$BQ$8844"
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).TickMarkSpacing = 730
ActiveChart.Axes(xlCategory).TickLabelSpacing = 730
End Sub
0
Chris

Diagramme "fühlen" keine Änderungen beim direkten Einfügen von Werten in Quellzellen mit Makro. Sie müssen Werte aus Diagrammzellen senden und danach Code wie folgt verwenden

Arbeitsblätter ("Blatt1"). Bereich ("A1: K1") = Arbeitsblätter ("Blatt2"). Bereich ("A4: K4"). Wert

0
Seyhan Mutlu

In Excel 2013 ist das gleiche Problem aufgetreten, es scheint jedoch im Zusammenhang mit einigen (selbst erstellten) Add-Ins zu stehen, die ich verwende und die dem Menüband eine Registerkarte hinzufügen. Nachdem Sie diese AddIns in den Optionen> AddIns> Springen: Exce-AddIns> AddIns-Feld nd Excel neu starten (!) Deaktiviert haben, wurden alle Diagramme in der Arbeitsmappe sofort aktualisiert. Sobald ich jedoch eines dieser Add-Ins aktiviere (einbinde), wird keines der Diagramme mehr aktualisiert. Dieses Problem tritt bei anderen Add-Ins (wie z. B. Solver) nicht auf, daher muss ich immer noch herausfinden, ob es durch das Erstellen eines zusätzlichen Tabs in der Multifunktionsleiste oder durch ein beliebiges Add-In von .xlam verursacht wird - Art.

Nur mithilfe des folgenden Umgehungscodes konnte ich die Diagramme davon überzeugen, ihre Arbeit zu erledigen:

Dim chtChart As ChartObject

For Each chtChart In ActiveSheet.ChartObjects
   chtChart.Chart.ChartWizard
Next chtChart

Seltsamerweise funktionierte auch die . Chart.Refresh - Methode nicht, aber . Chart.ChartWizard hat, obwohl keine Parameter angegeben sind, nichts geändert!

(Und ja, die Berechnungsmethode der Arbeitsmappe war/ist immer noch automatisch )


aktualisierung (17.09.2019):

Da ein anderes (Drittanbieter-) Add-In KEINE Aktualisierung von Diagrammen verhinderte, habe ich weitere Nachforschungen angestellt, den gesamten Code deaktiviert, den gesamten XML-Inhalt des benutzerdefinierten UI-Menübands gelöscht und alle Beziehungen zu externen Bibliotheken entfernt (soweit das möglich ist) VBE lass mich machen). Trotzdem konnte ich zuverlässig verhindern, dass alle Diagramme aktualisiert wurden, indem ich dieses jetzt völlig nutzlose Add-In aktivierte.

Als letzten Versuch habe ich das Add-In von Grund auf neu erstellt, indem ich den gesamten Code in eine neue .xlam-Datei kopiert, alle erforderlichen Bibliotheksbeziehungen festgelegt und schließlich den XML-Code für das Menüband mit dem customUI-Editor hinzugefügt habe.

Und siehe da !: jetzt wurden alle Karten aktualisiert :-D


Ohne Beweise kann ich also nur vermuten, dass mein altes AddIn (ursprünglich von 2011, also wahrscheinlich mit Excel 2007 oder 2010 erstellt) nicht vollständig mit Excel 2013 kompatibel war. Daher ist es immer eine gute Idee, ein neues Setup/eine neue Erstellung durchzuführen beliebiges AddIn mit der aktuellen Excel-Version ;-)

Viel Glück!

0
anythingelse

Was für mich funktionierte, war die Verwendung eines Makros zum Einfügen/Entfernen einer Spalte in der Datentabelle für das Diagramm. Dies führt dazu, dass das Diagramm die Datenauswahl aktualisiert.

Ich habe festgestellt, dass dies der schnellste Weg ist, um das Problem zu beheben. 

0
vanessa06106

Um ein Diagramm zu aktualisieren, fügen Sie einfach ein Sheets ("Sheet1") ein. Berechnen Sie es in Ihr Sub-Verfahren. Wenn Sie mehr Diagramme auf verschiedenen Registerkarten haben, erstellen Sie einfach eine Arbeitsblattschleife.

0
Missnlink

Dies mag extrem einfach aussehen, aber ich habe gerade die manuelle Berechnung in der Kalkulationstabelle ausprobiert, in der sich die Diagramme befanden (durch Drücken von F9), und es hat funktioniert! Der VBA-Code dafür ist einfach:

Berechnung

;) 

0
user3012511

Ich hatte ein ähnliches Problem - Diagramme wurden nicht aktualisiert. Ich habe fast alles in diesem Thread ohne Glück versucht. Ich stellte schließlich fest, dass die Diagramme, die ich kopierte und eingefügt hatte, mit den Quelldaten verknüpft waren. Deshalb zeigten sie alle dieselben Ergebnisse. 

Stellen Sie sicher, dass Sie Bilder kopieren und einfügen, bevor Sie alle anderen Bewegungen ausführen.

0
Matt R.