Microsoft Excel

Herbers Excel/VBA-Archiv

Datenpunkte suchen und einfärben

Betrifft: Datenpunkte suchen und einfärben von: Chris
Geschrieben am: 05.10.2014 17:52:22

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

  

Betrifft: AW: Datenpunkte suchen und einfärben von: Hajo_Zi
Geschrieben am: 05.10.2014 17:54:18

Du definierst
Dim vals2 As Integer
das kann also kein Array sein.

GrußformelHomepage


  

Betrifft: AW: Datenpunkte suchen und einfärben von: Daniel
Geschrieben am: 05.10.2014 19:03:21

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


  

Betrifft: AW: Datenpunkte suchen und einfärben von: Chris
Geschrieben am: 05.10.2014 22:14:08

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??


  

Betrifft: AW: Datenpunkte suchen und einfärben von: Daniel
Geschrieben am: 05.10.2014 22:21:22

Hi
Ich schrieb, dass du Vals gar nicht verwenden und einfach weglassen sollst, und stattdessen direkt mit dem Points arbeiten sollst.

Gruß Daniel


  

Betrifft: AW: Datenpunkte suchen und einfärben von: Chris
Geschrieben am: 06.10.2014 16:56:11

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




  

Betrifft: AW: Datenpunkte suchen und einfärben von: Daniel
Geschrieben am: 06.10.2014 17:30:16

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


  

Betrifft: AW: Datenpunkte suchen und einfärben von: Chris
Geschrieben am: 06.10.2014 18:54:58

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!!


  

Betrifft: AW: Datenpunkte suchen und einfärben von: Chris
Geschrieben am: 06.10.2014 18:30:21

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



 

Beiträge aus den Excel-Beispielen zum Thema "Datenpunkte suchen und einfärben"