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

Datenpunkte suchen und einfärben

Datenpunkte suchen und einfärben
05.10.2014 17:52:22
Chris

Hallo Leute,
Ich versuche ein Makro zu schreiben, welches die Datenpunkte in einem Diagramm mit bestimmten werten vergleicht und bei einer Übereinstimmung mit einer bestimmten Farbe einfärbt.
Ich hatte dieses Problem schon mal gepostet und dachte jetzt, dass ich alle Fehler behoben habe. Aber leider hat nun einen Fehler beim Kompilieren. Excel erwartet ein Datenfeld bei vals2(x2) = t1. An was kann das liegen? Meint ihr der Code könnte ansonsten das tun was er soll??
Danke für die Hilfe!!
Gruß Chris
Hier nochmal der ganze code


Dim t1              As String
Dim t2              As String
Dim t3              As String
Dim w1              As String
Dim w2              As String
Dim w3              As String
Dim cht2            As Chart
Dim s2              As Series
Dim p2              As Point
Dim vals2           As Integer
Dim x2              As Integer
t1 = Worksheets("DQI Comparison").Range("O4").Value
t2 = Worksheets("DQI Comparison").Range("O5").Value
t3 = Worksheets("DQI Comparison").Range("O6").Value
w1 = Worksheets("DQI Comparison").Range("O12").Value
w2 = Worksheets("DQI Comparison").Range("O13").Value
w3 = Worksheets("DQI Comparison").Range("O14").Value
Worksheets("DQI Comparison").Activate
ActiveSheet.ChartObjects("Diagramm 1").Activate
Set cht2 = ActiveSheet.ChartObjects(1).Chart
Set s2 = cht2.SeriesCollection(1)
vals2 = s2.Values
For x2 = 0 To s2.Points.Count
If vals2(x2) = t1 Then
With s2.Points(x2)
.MarkerBackgroundColor = RGB(255, 51, 0)
.MarkerForegroundColor = RGB(255, 51, 0)
End With
End If
Next x2

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenpunkte suchen und einfärben
05.10.2014 17:54:18
Hajo_Zi
Du definierst
Dim vals2 As Integer
das kann also kein Array sein.

AW: Datenpunkte suchen und einfärben
05.10.2014 19:03:21
Daniel
Hi
Ich würde an dieser Stelle die Vals-Variable weglassen und direkt mit den Points arbeiten:
If s2.Points(x2).value = t1 Then
Die Schleife dazu scheint mir unlogisch.
Entweder beginnt das Points-Array bei 0, dann darf die Schleife nur bis .Count-1 laufen, oder es beginnt bei 1, dann ist Ende bei .Count.
Was jetzt vorliegt, musst du selber rausfinden, aber mit
For x2 = 0 To s2.Points.Count
Triffst du auf jeden Fall ein ungültiges Element.
Gruß Daniel

Anzeige
AW: Datenpunkte suchen und einfärben
05.10.2014 22:14:08
Chris
Hallo ihr zwei,
ich hatte es ursprünglich auch so geschrieben gehabt und auch den selben Fehler bekommen:

For x2 = LBound(vals2) To UBound(vals2)
If vals2(x2) = t1 Then
With s.Points(x2)
.MarkerBackgroundColor = RGB(255, 51, 0)
.MarkerForegroundColor = RGB(255, 51, 0)
End With
End If
Next x2
Wie genau sollte ich denn das vals deklarieren??

AW: Datenpunkte suchen und einfärben
05.10.2014 22:21:22
Daniel
Hi
Ich schrieb, dass du Vals gar nicht verwenden und einfach weglassen sollst, und stattdessen direkt mit dem Points arbeiten sollst.
Gruß Daniel

AW: Datenpunkte suchen und einfärben
06.10.2014 16:56:11
Chris
Ok aber du meintest es gibt dann Probleme mit der Schleife?! Wie würdest du dieses Problem denn lösen?? Es gibt nun zwar keinen Kompilierfehler mehr aber wechselt währedn der Ausführung in den Debugging Modus und erzählt etwas von ungültigem Parameter?!
Hier nun mein Code ohne vals...
BG
Chris

Dim t1              As String
Dim t2              As String
Dim t3              As String
Dim w1              As String
Dim w2              As String
Dim w3              As String
Dim cht2            As Chart
Dim s2              As Series
Dim p2              As Point
Dim vals2           As Integer
Dim x2              As Integer
t1 = Worksheets("DQI Comparison").Range("O4").Value
t2 = Worksheets("DQI Comparison").Range("O5").Value
t3 = Worksheets("DQI Comparison").Range("O6").Value
w1 = Worksheets("DQI Comparison").Range("O12").Value
w2 = Worksheets("DQI Comparison").Range("O13").Value
w3 = Worksheets("DQI Comparison").Range("O14").Value
Worksheets("DQI Comparison").Activate
ActiveSheet.ChartObjects("Diagramm 1").Activate
Set cht2 = ActiveSheet.ChartObjects(1).Chart
Set s2 = cht2.SeriesCollection(1)
For x2 = 0 To s2.Points.Count - 1
If s2.Points(x2).Value = t1 Then
With s2.Points(x2)
.MarkerBackgroundColor = RGB(255, 51, 0)
.MarkerForegroundColor = RGB(255, 51, 0)
End With
End If
Next x2

Anzeige
AW: Datenpunkte suchen und einfärben
06.10.2014 17:30:16
Daniel
Hi
die Werte kannst du direkt aus s2.Values ableiten.
Die Indexzählung in den Diagrammen beginnt bei 1 und nicht bei 0.
Ich schrieb dir doch, dass du das noch prüfen musst.
so funktionierts bei mir (anbei der entscheidende Code)
Set cht2 = ActiveSheet.ChartObjects(1).Chart
Set s2 = cht2.SeriesCollection(1)
For x2 = 1 To s2.Points.Count
If s2.Values(x2) = t1 Then
With s2.Points(x2)
.MarkerBackgroundColor = RGB(255, 51, 0)
.MarkerForegroundColor = RGB(255, 51, 0)
End With
End If
Next x2
Gruß Daniel

AW: Datenpunkte suchen und einfärben
06.10.2014 18:54:58
Chris
Ok alles Super hat geklappt. Habe gedacht das die Indizes immer bei 0 anfangen :/
Aber vielen Dank für die Hilfe. Den zweiten Beitrag hatte ich nur geschrieben da ich deine Antwort noch nicht gefunden hatte und nun erst weiss was es mit dem Kontrollkästchen auf sich hat.
Schönen Abend!!

Anzeige
AW: Datenpunkte suchen und einfärben
06.10.2014 18:30:21
Chris
Hallo,
ich habe jetzt vals weggelassen aber leider bekomme ich immer noch eine Fehlermeldung beim Ausführen (ungültiger Parameter).
Und Daniel du sagtest die Schleife wäre unlogisch?! Wie würdest du sie denn lösen??
Anbei nochmal der gesamte Code...
Danke und Grüße
Chris

'set color for Top 3 and Worst 3 in the Matrix
Dim t1              As String
Dim t2              As String
Dim t3              As String
Dim w1              As String
Dim w2              As String
Dim w3              As String
Dim cht2            As Chart
Dim s2              As Series
Dim p2              As Point
Dim vals2           As Integer
Dim x2              As Integer
t1 = Worksheets("DQI Comparison").Range("O4").Value
t2 = Worksheets("DQI Comparison").Range("O5").Value
t3 = Worksheets("DQI Comparison").Range("O6").Value
w1 = Worksheets("DQI Comparison").Range("O12").Value
w2 = Worksheets("DQI Comparison").Range("O13").Value
w3 = Worksheets("DQI Comparison").Range("O14").Value
Worksheets("DQI Comparison").Activate
ActiveSheet.ChartObjects("Diagramm 1").Activate
Set cht2 = ActiveSheet.ChartObjects(1).Chart
Set s2 = cht2.SeriesCollection(1)
For x2 = 0 To s2.Points.Count - 1
If s2.Points(x2).Value = t1 Then
With s2.Points(x2)
.MarkerBackgroundColor = RGB(255, 51, 0)
.MarkerForegroundColor = RGB(255, 51, 0)
End With
End If
Next x2

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige