Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1220to1224
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
Dynamische Datenbeschriftung Diagramm
Manu
Hallo zusammen,
ich möchte gerne ein vorgefertigtes Säulendiagramm-Template erstellen, in dem man je nach Bedarf Zeilen mit Daten einfügen oder löschen kann. Die jeweiligen Säulen sollen über einen automatischen Text (nicht mit ihrem Wert) beschriftet werden. Ich habe alles soweit hinbekommen, auch die automatische Datenbeschriftung über die Eingabe einer Formel, wenn man den jeweiligen Datenpunkt markiert, die dann auf die entsprechende Referenz verweist. Funktioniert alles soweit wie ich es möchte, aber wenn man dann schließlich Zeilen mit Daten einfügt bzw. löscht, wandern die Bezüge für die Datenbeschriftung nicht mit bzw. werden nicht automatisch angepasst. Ich habe mich bereits selbst an einem VBA Makro (über die Makroaufzeichnung) versucht, bleibe aber an dem Befehl
Selection.Text = "=Tabelle1!R6C15"
hängen. Dieser Verweis enthält die Beschriftung des Datenpunktes und soll via Makro dynamisiert werden. Aber egal was ich auch versucht habe, ich kriege es nicht hin.
Ich würde mich sehr freuen, wenn vielleicht jemand einen Tipp für mich hätte.
Vielen Dank im Voraus!
Manu
AW: Dynamische Datenbeschriftung Diagramm
17.07.2011 10:18:55
Beverly
Hi Manu,
du musst in einer Schleife über alle Datenpunkte laufen und dann den Beschriftungslabels die Verknüpfung zur Zelle zuweisen - nach diesem Prinzip:
Sub Beschriftung()
Dim intPunkt As Integer
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Caption = "=Tabelle1!" & Cells(intPunkt, 15).Address(False, _
False)
Next intPunkt
End With
End Sub

Im Code wird vorausgesetzt, dass die Beschriftungen in zeile 1 beginnen. Falls nicht, musst du bei Cells(intPunkt, 15) noch den Zeilenversatz ergänzen, z.B. Cells(intPunkt + 5, 15), falls die Beschriftungen in Zeile 6 beginnen.


Anzeige
AW: Dynamische Datenbeschriftung Diagramm
17.07.2011 16:04:54
Manu
Hi Beverly,
erstmal danke für Deine Antwort.
Ich habs ausprobiert, aber leider nicht hinbekommen. Im VBA Editor bekomme ich immer den Laufzeitfehler '1004'.
Muss ich ggf. noch etwas anderes ersetzen?
Viele Grüße Manu
AW: Dynamische Datenbeschriftung Diagramm
17.07.2011 16:23:12
Beverly
Hi Manu,
an welcher Stelle bekommst du den Laufzeitfehler und was genau sagt der Debugger? Ist es ein Digrammblatt und kein eingebettetes Diagrammobjekt? Ist es tatsächlich die 1. Datenreihe, für die der Code ausgeführt werden soll und sind die Beschriftungslabel eingeblendet? Gibt es die "Tabelle1" nicht?


Anzeige
AW: Dynamische Datenbeschriftung Diagramm
17.07.2011 17:51:26
Manu
Hi Beverly,
hab´ in der Zwischenzeit noch ein wenig im Netz weitergesucht und bin auf einen älteren, aber ähnlichen Threat von Dir gestoßen:
Sub Beschriftungslabel()
Dim lngPunkt As Long
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
.ApplyDataLabels
For lngPunkt = 1 To .Points.Count
.Points(lngPunkt).DataLabel.Text = Cells(lngPunkt, 5)
Next lngPunkt
End With
End Sub
Hab´ es so ausprobiert und alles läuft einwandfrei - damit hast Du es gelöst!
1000 Dank nochmal!
Viele Grüße
Manu
AW: Dynamische Datenbeschriftung Diagramm
17.07.2011 18:00:39
Beverly
Hi Manu,
im Prinzip ist es der selbe Code wie der, den ich hier in meiner 1. Antwort gepostet habe - mit dem Unterschied, dass die Zellinhalte permanent in die Beschriftungslabel eingetragen werden. Falls du also irgendeinen Zellinhalt änderst, wird er nicht automatisch im Diagramm geändert und du musst den Code noch einmal ausführen. Das wollte ich nur noch als Hinweis ergänzen.
Dennoch wäre es schön zu wissen, an welcher Stelle im Code der Fehler aufgetreten ist um festzustellen, wo in deiner Arbeitsmappe die Ursache liegt - denn bei mir läuft er fehlerlos.


Anzeige
AW: Dynamische Datenbeschriftung Diagramm
18.07.2011 14:50:12
Manu
Hi Beverly,
es scheint an dem Diagrammtitel gehakt zu haben
ActiveSheet.ChartObjects("Chart 83").Activate
Hier kam zumindest die Fehlermeldung im VBA Editor auf.
Gibt es eine Möglichkeit, meinem Diagramm einen allgemeinen Namen zu geben, den ich auch in VBA ersetzen kann?
Habe versucht mein Diagramm in eine andere Datei zu verschieben und zu kopieren und auf einmal funktioniert es nicht mehr. In der Originaldatei läuft alles korrekt.
Viele Grüße
Manu
AW: Dynamische Datenbeschriftung Diagramm
18.07.2011 16:04:05
Beverly
Hi Manu,
an welcher Stelle in meinem Code hast du die Zeile ActiveSheet.ChartObjects("Chart 83").Activate gefunden? Auf den Befehl Activate kann man zu 99% verzichten, deshalb gibt es ihn bei mir auch nicht, da er hier nicht erfolderlich ist. Du solltest den Code schon so übernehmen wie er gepostet wurde.
Ein Diagramm kann man ansprechen durch seine Indexnummer (findest du auch in meinem geposteten Code) - ChartObjects(1)


Anzeige
AW: Dynamische Datenbeschriftung Diagramm
18.07.2011 19:05:03
Manu
Hi Beverly,
das habe ich auch getan, aber es trat immer ein Laufzeitfehler bei der folgenden Stelle des Codes auf:
.Points(intPunkt).DataLabel.Caption = "=Tabelle1!" & Cells(intPunkt, 15).Address(False, _
False)
Ich habe natürlich den Namen des Reiters entsprechend geändert und auch "intpunkt" wie von Dir beschrieben um 5 Zeilen versetzt, da die Beschriftung zufällig wirklich hier beginnt.
Der Name meines Diagramms ist "Chart 83". Aber selbst wenn ich den Befehl
ActiveSheet.ChartObjects("Chart 83").Activate
weggelassen habe, kam die Fehlermeldung. Kann es sein, dass der Code das Diagramm nicht ansprechen konnte? Es ist das einzige Diagramm in der Datei, so dass ich gedacht hätte es hätte auch Indexnummer 1. Wie kann ich die Nummer ermitteln?
Viele Grüße
Manu
Anzeige
AW: Dynamische Datenbeschriftung Diagramm
18.07.2011 19:33:01
Beverly
Hi Manu,
ich hatte schon einmal geschrieben, dass die Nummer der Fehlermeldung allein nicht viel sagt - dazu muss man schon mindestens wissen, was der Debugger genau sagt. Da ich deine Arbeitsmappe nicht kenne, kann ich also leider nichts weiter dazu sagen. Dann solltest du schon die Mappe hochladen, damit ich es selbst prüfen kann (bei mir funktioniert der Code ja problemlos).
Wenn es in dem betreffenden Tabellenblatt nur 1 Diagramm gibt, ist der Index immer die 1. Wenn das Diagramm nicht ansprechbar wäre, wäre schon in einer vorhergehenden Zeile eine Fehlermeldung aufgetreten.


Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige