Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

@Karin: Diagrammerweiterung

@Karin: Diagrammerweiterung
04.12.2014 11:34:17
NoPa
Hi Karin,
ich habe die Tabellen etwas verändern müssen!
Ich habe eigentlich nur manche Diagramme mit den dazugehörigen Tabellen ausgeschnitten und in anderer Mappen eingefügt!
https://www.herber.de/bbs/user/94193.xlsm
Jetzt haut die Diagrammerweiterung via VBA nicht mehr hin!
Kannst du dir das mal bitte anschauen!?
Es Kommt jetzt ein „Laufzeitfehler 1004“ Anwendungs- oder objektdefinierter Fehler!“
Danke
Gruß
Norbert

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagrammerweiterung
04.12.2014 18:07:49
Beverly
Hi Norbert,
um welchen Code handelt es sich und an welcher Stelle kommt der Fehler?
Hast du vielleicht noch einen Link zum alten Thread?


AW: Diagrammerweiterung
08.12.2014 09:37:59
NoPa
Hi Karin,
hier die Ausgangstabelle:
https://www.herber.de/bbs/user/94273.xlsm
und hier die Soll: Ich habe die Tabellen um je ein Monat erweiter. Das Diagramm aber nicht!
https://www.herber.de/bbs/user/94274.xlsm
hier der Link:
https://www.herber.de/forum/archiv/1392to1396/t1393455.htm#1394393
Hier der Code: im Modul1
Sub WertebereichVerschieben()
Dim lngReihe As Long
Dim strXWerte As String
Dim strYWerte As String
Dim strStart As String
Dim intEnde As Integer
Dim chrDia As ChartObject
intEnde = IIf(IsEmpty(Cells(6, Columns.Count)), _
Cells(6, Columns.Count).End(xlToLeft).Column, Columns.Count)
For Each chrDia In ActiveSheet.ChartObjects
With chrDia.Chart
strXWerte = Split(.SeriesCollection(1).Formula, ",")(1)
lngReihe = Range(strXWerte).Rows(3).Row
strStart = Range(strXWerte).Cells(1).Address
strXWerte = Cells(Range(strXWerte).Rows(1).Row, 2).Address & _
":" & Cells(Range(strXWerte).Rows(3).Row, intEnde).Address
.SeriesCollection(1).XValues = Range(strXWerte)
For lngReihe = 1 To .SeriesCollection.Count
‘          'hier steigt der Code in dem Reiter „Vergleich  KD“ aus! !'?!?!?!?!? und  _
im Reiter „Summe“ geht’s gar nicht!
strYWerte = Split(.SeriesCollection(lngReihe).Formula, ",")(2)
strYWerte = Cells(Range(strYWerte).Row, 2).Address & ":" _
& Cells(Range(strYWerte).Row, intEnde).Address
.SeriesCollection(lngReihe).Values = Range(strYWerte)
Next lngReihe
End With
Next chrDia
End Sub
Wie schon gesagt, habe ich aus der damaligen Tabelle so manche Tabellen und Diagramme ausgeschnitten und in andere Reiter/Mappen eingefügt!
Eine neue Zeile „Vergleich PA/FA Vorwoche“ habe ich auch in jeder Tabelle eingefügt! Aber die tut meiner Meinung nach nichts zur Sache.
Gruß
Norbert

Anzeige
AW: Diagrammerweiterung
08.12.2014 11:28:24
Beverly
Hi Norbert,
1. du solltest dir dein erstes Diagramme einmal genauer ansehen: da gibt es eine Datenreihe mit Bezug #REF! - deshalb steigt der Code bei dieser Datenreihe aus! Ändere den Bezug und der Code läuft durch
2. deine Diagramme sind anders aufgebaut als in der anderen Tabelle: sie haben bei den X-Werte den Bezug zu Tabelle "Vergleich VP" und nicht - wie die anderen Diagramme - zur aktuellen Tabelle. Folglich wird die letzte belegte Spalte falsch ermittelt, da ja im Code von der aktiven Tabelle ausgegangen wird und den Diagrammen somit logischerweise ein falscher Wertebereich zugewiesen wird - nur Spalte A:B und nicht bis zur letzten belegten Spalte in Zeile 6 der Tabelle "Vergleich VP". Es muss im Code also berücksichtigt werden, dass die letzte belegte Spalte in "Vergleich VP" und nicht in der aktuellen ermittelt wird - das änderdt den Code natürlich:
Sub WertebereichVerschieben()
Dim lngReihe As Long
Dim strXWerte As String
Dim strYWerte As String
Dim strStart As String
Dim intEnde As Integer
Dim chrDia As ChartObject
Dim strTabelleX As String
Dim strTabelleY As String
For Each chrDia In ActiveSheet.ChartObjects
With chrDia.Chart
strXWerte = Split(.SeriesCollection(1).Formula, ",")(1)
strTabelleX = Range(strXWerte).Parent.Name
lngReihe = Range(strXWerte).Rows(3).Row
intEnde = IIf(IsEmpty(Worksheets(strTabelleX).Cells(6, Worksheets(strTabelleX). _
Columns.Count)), _
Worksheets(strTabelleX).Cells(6, Worksheets(strTabelleX).Columns.Count).End( _
xlToLeft).Column, Columns.Count)
strStart = Range(strXWerte).Cells(1).Address
strXWerte = "'" & strTabelleX & "'!" & Cells(Range(strXWerte).Rows(1).Row, 2). _
Address & _
":" & Cells(Range(strXWerte).Rows(3).Row, intEnde).Address
.SeriesCollection(1).XValues = Range(strXWerte)
For lngReihe = 1 To .SeriesCollection.Count
strYWerte = Split(.SeriesCollection(lngReihe).Formula, ",")(2)
strTabelleY = Range(strYWerte).Parent.Name
strYWerte = "'" & strTabelleY & "'!" & Cells(Range(strYWerte).Row, 2).Address &  _
":" _
& Cells(Range(strYWerte).Row, intEnde).Address
.SeriesCollection(lngReihe).Values = Range(strYWerte)
Next lngReihe
End With
Next chrDia
End Sub
Beachte also künfitig bitte, dass ein Code immer nur für die Bedingungen geschrieben werden kann, wie sie im gegebenen Augenblick vorgelegen haben. Sobald man als Fragesteller jedoch diese Bedingungen ändert, darf man nicht unbedingt davon ausgehen, dass mit demselben Code auch die veränderten Bedingungen berücksichtigt werden können.
3. unterhalb deines letzten Diagramms gibt es ganz am linken Rand "unsichtbar" noch ein weiteres Diagramm - das löst ebenfalls einen Fehler aus, da dort Datenreihen mit #Ref!-Bezügen enthalten sind.


Anzeige
AW: Diagrammerweiterung
08.12.2014 15:08:43
NoPa
ja, ok du hast recht! die sind nicht gleich aufgebaut!
Das hatte ich nicht berücksichtigt.
Aber noch eine Frage zu den Diagrammen in der Mappe Vergleich KD" und "Vergleich Summe"
Im Vergleich KD beziehen sich die X-Wert auf Vergleich VP, ebenso bei Vergleich Summe! Bei KD wirde der Bereich ewrweitert, bei Summe nicht!
Warum wird dann der Berich bei "Summe" nicht auch auf Vergleich VP erweitert. Ich habe bei Vergleich KD ja auch keine Bezugstabelle in der Aktuellen Mappe!?
Heißt das, dass ich dann in jede Mappe eine Bezugs-Überschrift-Tabelle einfügen muss?
Gruß
norbert

Anzeige
AW: Diagrammerweiterung
08.12.2014 17:36:09
Beverly
Hi Norbert,
ein Diagramm kann durchaus problemlos seine Daten aus einem anderen Tabellenblatt beziehen.
Weshalb die Achsenbeschriftung in Tabelle Summe nicht korrekt erweitert angezeigt wird, kann ich nicht sagen - der Bereich ist nach Codeausführung jedenfalls korrekt zugewiesen.
Ich habe den Code jetzt nochmal umgeschrieben und der Achsenbeschriftungsbereich wird jeder Datenreihe explizit zugewiesen:
Sub WertebereichVerschieben()
Dim lngReihe As Long
Dim strXWerte As String
Dim strYWerte As String
Dim strStart As String
Dim intEnde As Integer
Dim chrDia As ChartObject
Dim strTabelleX As String
Dim strTabelleY As String
For Each chrDia In ActiveSheet.ChartObjects
With chrDia.Chart
strXWerte = Split(.SeriesCollection(1).Formula, ",")(1)
strTabelleX = Range(strXWerte).Parent.Name
intEnde = IIf(IsEmpty(Worksheets(strTabelleX).Cells(6, _
Worksheets(strTabelleX).Columns.Count)), _
Worksheets(strTabelleX).Cells(6, _
Worksheets(strTabelleX).Columns.Count).End( _
xlToLeft).Column, Columns.Count)
strStart = Range(strXWerte).Cells(1).Address
strXWerte = "'" & strTabelleX & "'!" & _
Cells(Range(strXWerte).Rows(1).Row, 2).Address & _
":" & Cells(Range(strXWerte).Rows(3).Row, intEnde).Address
For lngReihe = 1 To .SeriesCollection.Count
strYWerte = Split(.SeriesCollection(lngReihe).Formula, ",")(2)
strTabelleY = Range(strYWerte).Parent.Name
strYWerte = "'" & strTabelleY & "'!" & _
Cells(Range(strYWerte).Row, 2).Address & ":" _
& Cells(Range(strYWerte).Row, intEnde).Address
.SeriesCollection(lngReihe).XValues = Range(strXWerte)
.SeriesCollection(lngReihe).Values = Range(strYWerte)
Next lngReihe
End With
Next chrDia
End Sub
So funktioniert er jedenfalls in allen 3 Tabellen korrekt.
Übrigens: beim 1. Diagramm in Tabelle "Vergleich Summe" besteht der Achsenbeschriftungsbereich nur aus 2 Zeilen - der Code macht aber jetz 3 daraus.


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige