Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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 Punkte einfärben

Diagramm Punkte einfärben
23.05.2013 10:56:01
Philipp
Schönen Guten Tag,
ich schreibe zur Zeit ein Tool basiernd auf Excel / VBA, in welchem ich relativ viele Punkte in ein Diagramm zeichen lassen möchte. Nun habe ich habe allerdings noch ein zusätzliches Attribut für jedes Koordinatenpaar, welches die Farbe des Punktes beeinflussen soll. Je nach Inhalt der Zelle (S,M,L), soll der Punkt entweder rot, gelb oder grün werden.
Ich habe mich bereits in verschiedenen Forum umgesehen und versucht verschiedene Codes an mein Problem anzupassen, wobei ich aber bisher noch keinen Erfolg verbuchen konnte.
Hier mal mein bisheriger Code:
Sub change_color_points()
Dim Pt As Point
Dim Rng As Range
Dim x As Integer
Dim Y As Integer
Dim MyColor
Set Rng = ActiveSheet.Range("E:E")
x = 1
Y = 2
Application.ScreenUpdating = False
For Each Pt In Portfolio.ChartObjects("Portfolio").Chart.SeriesCollection(2).Points
Portfolio.ChartObjects("Portfolio").Activate
ActiveChart.SeriesCollection(2).Points(x).Select
If Range("E" & Y).Value = "S" Then
MyColor = 3
ElseIf Range("E" & Y).Value = "M" Then
MyColor = 5
Else
MyColor = 7
End If
With Selection.Border
.ColorIndex = MyColor
.Weight = xlThick
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.MarkerSize = 5
.Shadow = False
End With
x = x + 1
Y = Y + 1
Next Pt
Application.ScreenUpdating = True
End Sub

Hier mal meine bisherige Datei, damit Ihr mein Problem besser verstehen könnt.
https://dl.dropboxusercontent.com/u/40317881/Forum.xlsm
Achja ich benutze Office for Mac 2011
Schon einmal vielen Dank für die Hilfe!
Beste Grüße
Philipp

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm Punkte einfärben
23.05.2013 11:13:13
Klaus
Hallo Phillip,
nicht direkt Themenbezogen und ich bin auch nicht der Diagrammspezi, daher lasse ich den Thead offen. Nur ein paar Hinweise:
- in deinem Beitrag steht keine Frage!
- du solltest auf .select und .activate verzichten wann immer möglich
- herber.de hat eine eigene Upload Funktion. Verweise auf andere Filehoster sind hier nicht so gern gesehen.
Grüße,
Klaus M.vdT.

AW: Diagramm Punkte einfärben
23.05.2013 11:46:58
EtoPHG
Hallo Philipp,
1. Du benutzt For Each Pt In ..., das ist schon mal gut. Was aber ganz schlecht ist, das Objekt Pt wird nie mehr innerhalb der For-Schlaufe benutzt.
2. Du Springst mit .Activate/.Select wild von Objekt zu Objekt und das hier
Portfolio.ChartObjects("Portfolio").Activate
kann schon mal gar nicht funktionieren!
3. Durch .Select wechselst du den Objekt-Kontext und benutzt dann unreferenzierte Objekte wie Range, was z.B. in einem Diagrammblatt schon gar nicht funktionieren kann.
3. Du verzichtest auf jegliche Mitteilung von Fehlermeldungen, sei es des Compilers/Debuggers. Das macht die Fehleranalyse sehr aufwändig und schwierig.
4. Deiner Beispielmappe fehlt ein Chartobjekt im Diagrammblatt "Portfolio", als kann man auch nicht nachvollziehen, was du genau machen willst und das Nachzubauen macht keinen Sinn.
Also: Lade eine brauchbare Mappe (mit Diagramm) direkt ins Forum.
Gruess Hansueli

Anzeige
AW: Diagramm Punkte einfärben
23.05.2013 19:57:08
fcs
Hallo Philip,
nach dein Makro etwas umgestrickt unter Excel 2010.
Gruß
Franz
Sub change_color_points()
Dim objChart As Chart, objSerie As Series, wks As Worksheet
Dim x As Integer
Dim MyColor As Long
Application.ScreenUpdating = False
Set wks = Worksheets("Kalkulation")
Set objChart = Charts("Portfolio")
Set objSerie = objChart.SeriesCollection(2)
For x = 1 To objSerie.Points.Count
'Wert in Spalte E (5) des Punktes prüfen
Select Case wks.Cells(x + 1, 5).Value
Case "S"
MyColor = 3 ' rot
Case "M"
MyColor = 6 'gelb
Case Else
MyColor = 4 'grün
End Select
With objSerie.Points(x)
.MarkerForegroundColorIndex = 1 'xlColorIndexAutomatic      'Linienfarbe Marker
.MarkerBackgroundColorIndex = MyColor 'Füllfarbe Marker
.MarkerSize = 5
.Shadow = False
End With
Next x
Application.ScreenUpdating = True
Set objChart = Nothing: objSerie = Nothing: wks = Nothing
End Sub

Anzeige

69 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige