Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dynamische Diagramme per VBA ändern

Dynamische Diagramme per VBA ändern
06.03.2008 22:21:00
Ghalef
Moin in die Gemeinde,
habe folgendes Problem:
Datei besteht zunächst aus 2 Blättern.
Blatt 1 enthält generelle Daten (keine Formeln, Diagramme etc., sondern nur Werte)
Blatt 2 ist für einen Nutzer gedacht (mit Formattierungen, Formeln, etc. und einem Diagramm)
Beispiel
Name von Blatt2: Adam
Nun ist das Diagramm ein dynamisches welches und ich benötige Namensdefinitionen:
Name: Adam_ScrollVal
Bezug: =Adam!$S$2
Name: Adam_ZoomVal
Bezug: =Adam!$S$1
Name: Adam_X_Werte
Bezug: =BEREICH.VERSCHIEBEN(Adam!$C$31;Adam_ScrollVal;0;Adam_ZoomVal;1)
Name: Adam_Y_Werte01
Bezug: =BEREICH.VERSCHIEBEN(Adam!$D$31;Adam_ScrollVal;0;ANZAHL(Adam!$D:$D);1)
Die Bezüge im Diagramm sind wie folgt:
Beschriftung X-Achse: =Test.xls!Adam_X_Werte
Reihe 1:=Test.xls!Adam_Y_Werte01
Per Makro soll nun das Blatt 2 samt Inhalt in ein neues kopiert werden, um einen neuen Nutzer anzulegen.
Da der Name des neuen Blatts anders sein muss, müssen auch neue Namensdefinitionen erzeugt werden (kein Problem) und die Diagramm-Bezüge geändert werden (hier ist das Problem).
z.B.
Name: Eva_X_Werte
Name: Eva_Y_werte01
Name: Eva_ScrollVal
Name: Eva_ZoomVal
Per VBA nach Chart.Activate
ActiveChart.SeriesCollection(1).XValues = "='" & ThisWorkbook.Name & "'!" & SN & "_X_Werte"
ActiveChart.SeriesCollection(x).Values = "='" & ThisWorkbook.Name & "'!" & SN & "_Y_Werte0" & x
(Variable x : Zähler für die einzelnen Reihen)
(Variable SN: Name des neuen Blatts)
Habe schon vieles probiert, auch im Debug-Modus auf die Variablen verzichtet und Klartext geschrieben, aber ich bekomme immer den "Laufzeitfehler 1004".
Wo ist mein Fehler?
Danke und Gruß
Ghalef

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Diagramme per VBA ändern
07.03.2008 08:40:00
Beverly
Hi Ghalef,
schau mal auf meine HP, Seite "Diagramm m. VBA". Dort findest du das Beispiel "Datenbereich übernehmen". Vielleicht hilft dir das weiter.
Link zur Datei


AW: Dynamische Diagramme per VBA ändern
07.03.2008 18:49:00
Ghalef
Hi Karin,
hat leider nicht funktioniert.
Die Verwendung von "Set" hat aber zur Folge, daß ich nach Auftreten des Fehlers nicht mehr debuggen kann. Der Fehler Nr. 1004 bleibt hartnäckig bestehen.
Trotzdem Danke.
Gruß
Ghalef

Anzeige
AW: Dynamische Diagramme per VBA ändern
07.03.2008 19:06:00
Beverly
Hi Ghalef,
dann lade doch deine Arbeitsmappe mal hoch, denn ich kenne die Bedingungen ja nicht.


AW: Dynamische Diagramme per VBA ändern
07.03.2008 21:23:00
Ghalef
Hi Karin,
hier der Link.
https://www.herber.de/bbs/user/50560.xls
Ich habe die Datei simplifiziert, damit Du direkt zum Problem kommst.
Gruß
Ghalef

AW: Dynamische Diagramme per VBA ändern
08.03.2008 16:26:26
Beverly
Hi Ghalef,
generell darf der Name kein Leerzeichen enthalten.
Ich habe jetzt verschiedenes getestet, mit dem Ergebnis, dass der folgende Code unter Excel2007 funktioniert, unter Excel2002 jedoch nicht. Excel2003 habe ich leider nicht zur Verfügung.
In 2002 habe ich keine Möglichkeit gefunden, den Namen als Wertebereich zuzuweisen, der Code läuft immer auf einen Fehler.

Private Sub Workbook_Open()
Dim SN, bN As String
Dim chDiagramm As Chart
If Worksheets(1).Name = "NoName" Then
'Name eingeben
Mldg = "Bitte Name eingeben"
Titel = "Herzlich Willkommen!!!"
Voreinstellung = "NeuerSpieler"
SN = InputBox(Mldg, Titel, Voreinstellung)
If SN = "" Then Exit Sub
Worksheets(1).Name = SN
Worksheets(SN).Select
With ActiveWorkbook.Names
.Add Name:=SN & "_ScrollVal", RefersToR1C1:="='" & SN & "'!R2C19"
.Add Name:=SN & "_ZoomVal", RefersToR1C1:="=" & SN & "!R1C19"
.Add Name:=SN & "_X_Werte", RefersToR1C1:="=OFFSET(" & SN & "!R31C3," & SN & " _
_ScrollVal,0," & SN & "_ZoomVal,1)"
.Add Name:=SN & "_Y_Werte01", RefersToR1C1:="=OFFSET(" & SN & "!R31C4," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C4),1)"
.Add Name:=SN & "_Y_Werte02", RefersToR1C1:="=OFFSET(" & SN & "!R31C5," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C5),1)"
.Add Name:=SN & "_Y_Werte03", RefersToR1C1:="=OFFSET(" & SN & "!R31C6," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C6),1)"
.Add Name:=SN & "_Y_Werte04", RefersToR1C1:="=OFFSET(" & SN & "!R31C7," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C7),1)"
.Add Name:=SN & "_Y_Werte05", RefersToR1C1:="=OFFSET(" & SN & "!R31C8," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C8),1)"
.Add Name:=SN & "_Y_Werte06", RefersToR1C1:="=OFFSET(" & SN & "!R31C9," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C9),1)"
.Add Name:=SN & "_Y_Werte07", RefersToR1C1:="=OFFSET(" & SN & "!R31C10," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C10),1)"
.Add Name:=SN & "_Y_Werte08", RefersToR1C1:="=OFFSET(" & SN & "!R31C11," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C11),1)"
.Add Name:=SN & "_Y_Werte09", RefersToR1C1:="=OFFSET(" & SN & "!R31C12," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C12),1)"
.Add Name:=SN & "_Y_Werte10", RefersToR1C1:="=OFFSET(" & SN & "!R31C13," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C13),1)"
.Add Name:=SN & "_Y_Werte11", RefersToR1C1:="=OFFSET(" & SN & "!R31C14," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C14),1)"
.Add Name:=SN & "_Y_Werte12", RefersToR1C1:="=OFFSET(" & SN & "!R31C15," & SN & " _
_ScrollVal,0,COUNT(" & SN & "!C15),1)"
End With
Set chDiagramm = Worksheets(SN).ChartObjects(1).Chart
With chDiagramm
.SeriesCollection(1).XValues = "='" & ThisWorkbook.Name & "'!" & SN & "_X_Werte"
For x = 1 To 9
.SeriesCollection(x).Values = "='" & ThisWorkbook.Name & "'!" & SN & "_Y_Werte0" _
& x
Next
For x = 10 To 12
.SeriesCollection(x).Values = "='" & ThisWorkbook.Name & "'!" & SN & "_Y_Werte"  _
& x
Next
End With
End If
End Sub


Falls er in 2003 auch nicht läuft, bliebe die Möglichkeit, die Change Ereignisse der beiden Bildlaufleisten zu benutzen, um den Wertebereich direkt zuzuweisen, ohne Namen für die Dynamik zu verwenden.



Anzeige
AW: Dynamische Diagramme per VBA ändern
08.03.2008 19:47:00
Ghalef
Hi Karin,
klar, dass der Name keine Leerzeichen enthalten dar.
Unter Excel 2003 funktioniert es leider so nicht. :,-(((
Sollte das ein Grund sein, auf Excel 2007 zu wechseln?
Eigentlich wollte ich die beiden Namen für die Change-Ergeignisse der Bildlaufleisten noch anderweitig benutzen, aber einen Versuch ist es allemal wert.
Wenn ich drüber nachdenke, fallen mir 2 mögliche Nachteile ein:
1) Die Grafik wird erst nach dem change-Ereignis erzeugt, d.h. so lange kein Change-Ereignis der Scroll-Bars aufgetreten ist, gibt's keine Grafik.
2) Die Geschwindigkeit der Darstellung sinkt, da bei jeder Änderung die Definitionen geändert werden.
Stimmst Du mir zu?
so long, Besten Dank!!!
Falls jemand anders noch eine Idee hat, ich bin für alle Vorschläge offen!
Gruß
Ghalef

Anzeige
AW: Dynamische Diagramme per VBA ändern
08.03.2008 20:33:00
Beverly
Hi Ghalef,
die Namen kannst du ja dennoch verwenden - sie lassen sich nur nicht in das Diagramm als Datenquelle eintragen.
Warum soll das Diagramm erst nach dem Change Ereignis erstellt werden? Den Wertebereich kann man doch direkt als Range zuweisen in Abhängigkeit von den Werten in der Zellverknüpfung der Bildlaufleisten.
Die Definition des Wertebereichs muss zwar bei jeder Änderung neu zugewiesen werden, aber das senkt die Performance nicht so wesentlich, als das man es nicht mehr anschauen könnte.
Summa summarum - ich stimme dir nicht zu ;-)


Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige