Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1136to1140
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

VBA Diagramme seriesCollection(1) Values

VBA Diagramme seriesCollection(1) Values
David
Hallo,
ich habe folgendes Problem:
ich muss ca. 200 Diagramme für Produkte erstellen mit deren Durchlaufzeiten!
ich habe mir nun ein Diagramm so gebastelt wie ich es von der formatierung usw. haben will und jetzt versuche ich mit folgenden Code dieses Diagramm zu vervielfachen.
Jedoch scheitere ich immer daran den SeriesCollections die Datenquelle zuzuweißen.
Kann mir vllt jemand einen Tipp geben ich habe wirklich schon 1000 Varianten versucht!
Danke & LG
Sub Chart_kopieren()
Dim i As Integer
Dim cht As Chart
Dim rng As Range
Dim text As String
i = 4
While i 

AW: VBA Diagramme seriesCollection(1) Values
12.02.2010 15:24:29
Beverly
Hi David,
den Wertebereich kann man einem Diagramm auf diese Weise zuweisen:
 ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=Worksheets("Tabelle1").Range("A16:B20") _



AW: VBA Diagramme seriesCollection(1) Values
12.02.2010 15:37:21
David
Hi Beverly!
Danke aber ich habe das Problem das ich keinen Bereich als Datenquelle verwenden kann sondern muss 4 einzelne Zellen als Datenquelle angeben...
Hast du hierfür vllt auch eine Lösung?
Danke & LG
AW: VBA Diagramme seriesCollection(1) Values
12.02.2010 17:33:33
Beverly
Hi David,
in einem Bereich kan man auch einzelne Zellen angeben:

ActiveSheet.ChartObjects(1).Chart.SetSourceData _
Source:=Worksheets("Tabelle1").Range("A10,A12,A15,A18")



Anzeige
AW: VBA Diagramme seriesCollection(1) Values
15.02.2010 08:59:11
David
Hy Beverly!
Danke für die Info!
Eine Frage hätt ich noch. Wie kann ich die Datenquelle zuweisen wenn ich mehrere Reihen habe (SeriesCollection1, SeriesCollection2, SeriesCollection3)?
Danke!
LG
AW: VBA Diagramme seriesCollection(1) Values
15.02.2010 10:56:04
Beverly
Hi David,
wie ist denn dein Arbeitsblatt aufgebaut? Lade doch deine Mappe mal hoch, da kann man das besser nachvollziehen.


AW: VBA Diagramme seriesCollection(1) Values
15.02.2010 18:47:40
David
Hi Beverly!
Hab jetzt probiert die Excel Mappe hochzuladen jedoch ist das nur bis zu einer größe von 300 kb möglich!
ich habe alles schon rausgelöscht was ich nicht benötigt habe und auch gezipt jedoch komme ich mit der größe nicht hin!
Ich kann dir nur sagen das ich in einer Tabelle "Entwicklung" die daten stehen habe und in einer Tabelle "Diagramm Entwicklung2" die Diagramme erstellen möchte!
Dies mache ich dadurch das ich eines kopiere und dann die 3 Reihen (SeriesCollections) werte aus der Tabelle "Entwicklung" geben möchte die immer untereinander sind!
Die 1. Reihe (10. Perzentile) bekommt die Werte z.B.: aus den Zellen K4, R4, Y4, AF4
die 2. Reihe (50.Perzentile) bekommt die Werte aus den Zellen L4, S4, Z4, AG4
die 3. Reihe (90.Perzentile) bekommt die werte aus den Zellen M4, T4, AA4, AH4
Das nächste Diagramm bekommt die Werte dann aus den gleichen Spalten nur Zeile 5 usw..
Mit diesem Makro muss ich ca. 180 Diagramme befüllen und möchte nicht bei jeden in die Datenquelle einsteigen müssen und je Diagramm bei 3 Reihen 4 Zellenbezüge ändern müssen!
Ich habe dies mit folgendem Code probiert: (egtl habe ich schon 1000 varianten durchprobiert) aber diese ist die letzte version
Sub Chart_kopieren()
Dim i As Integer
Dim cht As Chart
Dim rng As Range
Dim text As String
i = 4
While i 

Ich danke dir für deine Hilfe und deine Geduld ;-)
LG
Anzeige
AW: VBA Diagramme seriesCollection(1) Values
15.02.2010 22:03:17
Beverly
Hi David,
versuche es mal nach diesem Prinzip:

With ActiveSheet.ChartObjects(1).Chart
.SeriesCollection(1).FormulaLocal = "=DATENREIHE(;;(Entwicklung!$K$" & i & _
";Entwicklung!$R$" & i & ";Entwicklung!$Y$" & i & ";Entwicklung!$AF$" & i & ");)"
.SeriesCollection(2).FormulaLocal = "=DATENREIHE(;;(Entwicklung!$L$" & i & _
";Entwicklung!$S$" & i & ";Entwicklung!$Z$" & i & ";Entwicklung!$Ag$" & i & ");)"
.SeriesCollection(3).FormulaLocal = "=DATENREIHE(;;(Entwicklung!$M$" & i & _
";Entwicklung!$T$" & i & ";Entwicklung!$AA$" & i & ";Entwicklung!$AH$" & i & ");)"
End With



Anzeige
AW: VBA Diagramme seriesCollection(1) Values
16.02.2010 14:24:47
David
Hi Beverly,
also ich weiß auch nicht mehr warum es nicht funktioniert.
Hab nun folgende Fehlermeldung:
Laufzeitfehler 1004
(Die FormulaLocal-Eigenschaft des SeriesObjekts kann nicht festgelegt werden)
AW: VBA Diagramme seriesCollection(1) Values
16.02.2010 15:50:28
Beverly
Hi David,
so lange ich deine Mappe nicht sehen kann, kann ich auch nicht helfen, denn bei mir funktioniert der gepostete Code problemlos. Hast du in deiner Mappe viele Zellformatierungen (Füllfarbe, Rahmen etc.) oder Bilder/Grafiken drin? Lösche die mal, das verkleinert den Speicherplatz einer Mappe. Vielleicht kannst du sie dann hochladen.


Anzeige
AW: VBA Diagramme seriesCollection(1) Values
17.02.2010 09:56:17
David
hi beverly!
da ich es nicht so klein komprimieren konnte habe ich es auf eine hp von mir zum donwload bereitgestellt!
http://www.party-aufeigenegefahr.at/pages/download.php
hier kannst du die datei downloaden
habe wichtige inhalte aus meiner firma löschen müssen!
es geht nur darum wie bereits beschrieben das ich mit diesem makro ca. 200 diagramme in der tabelle "entwicklung 2" erstellen sollte.
ein diagramm habe ich bereits erstellt und dieses sollte immer nur kopiert werden und darunter gesetzt werden sowie die datenquelle aus "entwicklung" eigentlich nur um eine zeile hochgezählt werden.
wie du siehst habe ich im diagramm 3 Reihen die ich mit daten befüllen soll.
ich hoffe du kannst mir helfen und danke für diene geduld!
lg
Anzeige
AW: VBA Diagramme seriesCollection(1) Values
17.02.2010 12:49:21
Beverly
Hi David,
du hättest eine ganze Reihe an Zeilen in den Tabellenblättern löschen können, da sie für das eigentliche Problem irrelevant sind - die Schleife lässt du ja nur von Zeile 4 bis 6 laufen - da wäre der Speicherbedarf deiner Mappe wesentlich kleiner geworden.
So sollte es gehen:

Sub Chart_kopieren()
Dim i As Integer
Dim chDiagramm As Chart
Dim strFormel1 As String
Dim strFormel2 As String
Dim strFormel3 As String
strFormel1 = "=DATENREIHE(""10. Perzentile"";(Entwicklung!$K$1;Entwicklung!$R$1;Entwicklung! _
_
$Y$1;Entwicklung!$AF$1);(Entwicklung!$K$3;Entwicklung!$R$3;Entwicklung!$Y$3;Entwicklung!$AF$3);) _
strFormel2 = "=DATENREIHE(""50. Perzentile"";(Entwicklung!$K$1;Entwicklung!$R$1;Entwicklung! _
_
$Y$1;Entwicklung!$AF$1);(Entwicklung!$K$3;Entwicklung!$R$3;Entwicklung!$Y$3;Entwicklung!$AF$3);) _
strFormel3 = "=DATENREIHE(""90. Perzentile"";(Entwicklung!$K$1;Entwicklung!$R$1;Entwicklung! _
_
$Y$1;Entwicklung!$AF$1);(Entwicklung!$K$3;Entwicklung!$R$3;Entwicklung!$Y$3;Entwicklung!$AF$3);) _
i = 4
While i 

Das Problem bei deinem Ausgangsdiagramm ist, dass die Zellen auf die sich das Diagramm bezieht, leer sind. In solch einem Fall erkennt Excel nicht, dass eine Dateneihe vorhanden ist und kann folglich die Datenreihenformel oder den Bereichsbezug nicht ändern.


Anzeige
AW: VBA Diagramme seriesCollection(1) Values
17.02.2010 14:40:36
David
Hi beverly!
Also ich habe das letzte Mal als ich versucht hatte die Mapp hochzuladen wirklich schon alles bis auf 3 Zeilen und 1 Diagramm rausgelöscht gehabt.... bin trotzdem nicht auf unter 300 kb gekommen ... egal
DANKE!!!! hat wirklich super funktioniert ;-)
jetzt hätte ich noch eine frage *g* (da du dich so gut mit diagrammen in vba auskennst)
weißt du vllt auch wie ich die Formatierung der Reihen so hinbekomme wie bei dem das ich kopiert habe?
nochmals vielen vielen dank!!!!
AW: VBA Diagramme seriesCollection(1) Values
17.02.2010 16:16:16
Beverly
Hi David,
sobald eine Zelle benutzt wird, werden dort Steuerzeichen eingetragen, die nicht zu sehen sind. Auch wenn die Zellinhalte und Formatierungen entfernt werden, bleiben diese Steuerzeichen erhalten und Excel "erkennt", dass das Tabellenblatt bis zur letzten jemals genutzten Zelle reicht, was natürlich den Speicherbedarf wesentlich erhöhen kann. Auf dem 1. Tabellenblatt befinden sich bis Zelle AK65435 derartige Steuerzeichen - drücke mal Strg+Ende und der Cursor springt dort hin. Du hast vermutlich die Formatierungen entfernt, nicht jedoch die Zeilen physisch gelöscht (Zeilen markieren -&gt Rechtsklick -&gt Zellen löschen) - deshalb der hohe Speicherbedarf deiner Mappe. Wenn du die Zeilen löschst (und auch noch das 2. Tabellenblatt entfernst, was ja für das Problem nicht von Relevanz ist), benötigt die Mappe nur noch ca. 70 kB.
Ergänze den Code vor End With um diese Zeilen:
            With .Legend.LegendEntries(1).LegendKey
With .Border
.ColorIndex = 12
.Weight = xlMedium
.LineStyle = xlContinuous
End With
.MarkerBackgroundColorIndex = 12
.MarkerForegroundColorIndex = 12
.MarkerStyle = xlStar
.Shadow = True
End With
With .Legend.LegendEntries(2).LegendKey
With .Border
.ColorIndex = 54
.Weight = xlMedium
.LineStyle = xlContinuous
End With
.MarkerBackgroundColorIndex = 54
.MarkerForegroundColorIndex = 54
.MarkerStyle = xlStar
.Shadow = True
End With
With .Legend.LegendEntries(3).LegendKey
With .Border
.ColorIndex = 52
.Weight = xlMedium
.LineStyle = xlContinuous
End With
.MarkerBackgroundColorIndex = 52
.MarkerForegroundColorIndex = 52
.MarkerStyle = xlStar
.Shadow = True
End With



Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige