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

Diagramm-Nachhilfe

Diagramm-Nachhilfe
26.06.2013 18:20:39
Nachtaktivist
Hallo werte Gemeinde,
ich bins wieder ;)
Ich arbeite gerade mit Diagrammen, wobei mir aber die nötige Erfahrung fehlt.
Da Charts für mich Neuland in VBA sind, kannte ich die Bezeichnungen und Syntaxen nicht aber ich habe mich im Netz etwas dazu belesen. Leider werde ich damit noch nicht komplett glücklich.
Ich erläutere kurz mein Vorhaben:
- Button in UserForm klicken -> Alle Datenbeschriftungen anzeigen (klappt)
- Werte, die "0" sind, sollen keine Datenbeschriftung bekommen (klappt nicht)
Ich dachte an eine FOR-EACH-NEXT-Schleife, die den bestimmten Datensatz durchgeht und abhängig vom Wert des Datenpunktes die Datenbeschriftung setzt bzw. nicht setzt.
Schön wäre es, ohne Activate und Select auszukommen. Vieles im Netz basierte auf vorherigem aktivieren des Diagramms und weiter dann mit ActiveChart und SeriesCollection(1).Select..
An anderer Stelle (wo es nicht um einzelne Datenpunkte geht) konnte ich direkt das Diagramm und den Datensatz ansprechen ohne zu selektieren:
(Sheets("Tabelle 1").ChartObjects("Diagramm 1").Chart.SeriesCollection(1). ...).
Versuche ich aber dieses Schema F jetzt hier bei den Datenpunkten misslingt mir das.
Dachte an sowas wie:

For each Point in Sheets("Tabelle 1").ChartObjects("Diagramm 1").Chart.SeriesCollection(1). _
Points
Next

aber leider ohne Erfolg. :(
Kann mir jemand helfen?
Gruß
Chris

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Diagramm Punkte auslesen?
26.06.2013 19:22:17
Nachtaktivist
(Betreff geändert)

AW: Diagramm Punkte auslesen?
26.06.2013 20:05:37
Hajo_Zi
dir ist schon klar das Du mit Deinen Antwort, Deinen Beitrag aus der Liste der offenen Beiträge entfernt hast?
Stelle jetzt nicht als Antwort auf meinen Beitrag den Beitrag auf offen. Da sieht keiner das Problem

Sorry
26.06.2013 20:35:58
Nachtaktivist
Hallo Hajo,
ja ich sah es eben in grün schon beim anderen Beitrag, bei dem du die gleiche Nachricht schriebst.
Wollte nur die unpassende Überschrift ändern. Und wie ist nun das weitere Vorgehen? Darf ich den Beitrag nochmal reinsetzen, dass er offen ist?
Gruß
Chris

Anzeige
AW: Sorry
26.06.2013 20:41:10
Hajo_Zi
Hallo Chris,
Antworte auf den ersten Beitrag und stelle ihn auf offen.

Diagramm Punkte-Werte (y) auslesen
26.06.2013 20:58:40
Nachtaktivist
Hallo noch einmal,
auf Anweisung von Hajo (danke dir Hajo für den Hinweis, wie ich vorgehen soll) habe ich den Beitrag auf diese Weise nochmal geöffnet. Ich hatte ihn durch meine Betreff-Änderung ungewollt geschlossen.
Bisher habe ich noch keine Lösung erwirtschaftet. Ich probiere krampfhaft aber leider fehlt mir der nötige Durchblick bei den Diagrammen in VBA.
Gruß
Chris

AW: Diagramm Punkte-Werte (y) auslesen
26.06.2013 21:06:34
Beverly
Hi Chris,
nach diesem Prinzip:
   Dim lngPunkt As Long
With Worksheets("Tabelle 1").ChartObjects("Diagramm 1").Chart.SeriesCollection(1)
For lngPunkt = 1 To .Points.Count
Next lngPunkt
End With


Anzeige
AW: Diagramm Punkte-Werte (y) auslesen
26.06.2013 21:42:20
Nachtaktivist
Danke Karin,
Das klappt soweit, nur wie kriege ich die Werte des Punktes ermittelt? Ich vermutete:

With Worksheets("Tabelle 1").ChartObjects("Diagramm 1").Chart.SeriesCollection(1)
For lngPunkt = 1 To .Points.Count
If .Points(lngPunkt).Values = 0 Then 'FEHLER siehe folgende Erläuterung
MsgBox "0"
End If
Next lngPunkt
End With

Aber leider bekomme ich da einen Fehler bei der Zeile mit IF, dass das Objekt diese Eigenschaft oder Methode nicht unterstützt. Kann ja nur an der Syntax liegen (Anweisung zum Auslesen des Wertes), oder?
Kannst du mir da auch aus der Patsche helfen?
Gruß
Chris

Anzeige
AW: Diagramm Punkte-Werte (y) auslesen
26.06.2013 21:53:55
Beverly
Hi Chris,
da du die Datenbeschriftung eingeblendet hast, kannst du prüfen, ob der Text des Beschriftungslabels "0" ist.


AW: Diagramm Punkte-Werte (y) auslesen
26.06.2013 22:18:18
Nachtaktivist
Hi Karin,
vielleicht habe ich zu Beginn zu wenig oder falsch erläutert.
Eigentlich möchte ich die Datenbeschriftungen für Werte, die nicht 0 sind anzeigen und die mit 0 (herausfiltern und) nicht anzeigen. Da hatte ich die Idee mit der Schleife, die jeden Wert abfragt und entsprechend des Wertes die Datenbeschriftung setzt oder nicht.
Ich könnte zwar alle Datenbeschriftungen anzeigen und dann die Nuller wieder entfernen aber wieso erst anzeigen wenn ich sowieso wieder lösche ;) wollte mal testen was schneller geht und im Ablauf besser aussieht.
Wie kann ich also ohne Datenbeschriftungen auf die Werte zugreifen?
(Hoffe es ist noch nicht zu spät...)
Gruß
Chris

Anzeige
AW: Diagramm Punkte-Werte (y) auslesen
27.06.2013 09:01:01
Beverly
Hi Chris,
bei der ersten Variante blendest du erst alle Beschriftungslabel ein und blendest die "falschen" aus, bei der zweiten gehst du den umgekehrten Weg und blendest nur die "richtigen" ein - wo ist also der prinzipielle Unterschied? Einblenden musst du die Beschriftungslabel so oder so (irgendwie). Bei der ersten prüfst du anhand der Punkt-Beschriftung, bei der zweiten musst du die Werte in ein Array einlesen, anhand dieses Arrays prüfen, ob der Wert verschieden von 0 ist und wenn nicht, dieses Label einblenden. Es spielt also letztendlich keine Rolle, welche Variante du wählst - keine ist schneller oder langsamer als die andere.
Variante 1:
Sub MitBeschriftung()
Dim lngPunkt As Long
With Worksheets("Tabelle1").ChartObjects("Diagramm 1").Chart.SeriesCollection(1)
If .HasDataLabels = False Then .ApplyDataLabels
For lngPunkt = 1 To .Points.Count
If .Points(lngPunkt).DataLabel.Text = "0" Then .Points(lngPunkt).DataLabel.Text = ""
Next lngPunkt
End With
End Sub
Variante 2:

Sub OhneBeschriftung()
Dim lngPunkt As Long
Dim arrWerte
With Worksheets("Tabelle1").ChartObjects("Diagramm 1").Chart.SeriesCollection(1)
If .HasDataLabels Then .DataLabels.Delete
arrWerte = .Values
For lngPunkt = 1 To .Points.Count
If arrWerte(lngPunkt)  0 Then .Points(lngPunkt).ApplyDataLabels
Next lngPunkt
End With
End Sub


Anzeige
AW: Diagramm Punkte-Werte (y) auslesen
27.06.2013 10:21:37
Nachtaktivist
Vielen Dank Karin,
ich werde beide Versionen testen. Der Unterschied den ich mit bedenke ist, dass beim Einblenden aller Beschriftungen der Anwender kurzzeitig auch die Null-Werte beschriftet sieht und diese dann wieder verschwinden. Dieses visuelle Ereignis möchte ich mit deiner zweiten Variante umgehen (vielleicht ist EX aber auch so schnell bei der ersten Variante, dass man es gar nicht sieht - das teste ich gleich noch).
Danke nochmal für deine Mühen, deine Hinweise helfen mir sehr.
Gruß
Chris

AW: Diagramm Punkte-Werte (y) auslesen
27.06.2013 10:31:01
Beverly
Hi Chris,
wenn es um die Anzeige geht - ebenso wie der Benutzer das Ausblenden der 0-Werte sehen würde, würde er doch auch sehen, wie die einzelnen Beschriftungslabel nacheinander eingeblendet werden. Ich würde also einfach beim Start mit Application.ScreenUpdating = False die Bildschirmaktualisierung aus- und am Ende mit = True wieder einblenden - dann sieht der Benutzer tatsächlich nur das Endergebnis, gleichgültig welche Variante du verwendest.


Anzeige
AW: Diagramm Punkte-Werte (y) auslesen
27.06.2013 14:38:44
Nachtaktivist
Hi Karin,
ja das ist eine gute Idee, darauf bin ich noch nicht gekommen, weil das auch eine neue Funktion für mich ist. Momentan ist mir noch ein Problem bei dem Definieren des Datenbereichs aufgetreten, der bei bestimmten Wertepaaren auftritt. Damit komme ich aber scheinbar noch zurecht :) Das andere (deine Tipps) folgt dann, wenn das sauber ist.
Danke für deine Tipps.
Rückmeldung ist garantiert.
Gruß
Chris

Gelöst und vielen Dank
02.07.2013 13:39:15
Nachtaktivist
Hallo Karin,
habe beide Versionen getestet und ich habe im Diagramm etwa 60 Werte. Beide Versionen funktionieren tadellos.
Excel ist nun so fix, dass man auch beim Einblenden aller Beschriftungen und anschließendem Entfernen der Null-Wert-Beschriftungen das Einblenden und Löschen der Null-Wert-Beschriftungen visuell nicht registrieren kann. Die Deaktivierung der Bildschirmaktualisierung ist somit nicht notwendig.
Vielen Dank für beide Versionen.
Gruß
Chris

Anzeige
noch offen
26.06.2013 22:38:22
Nachtaktivist
(sorry hatte vergessen Beitrag auf offen zu setzen)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige