1

X または Y とは異なる値に基づいて、散布図のマーカーの色を変更しようとしています。値は、マーカーの X および Y と同じ行にあります。これを実行しましたが、値の領域を適切に定義できないようです。私は実際にコーディングしていないので、間違った方法で見ているかもしれません...

Sub color_chart()

Dim chartIterator As Integer, pointIterator As Integer, _
    seriesArray() As Variant

For chartIterator = 1 To ActiveSheet.ChartObjects.Count
    seriesArray = ActiveWorkbook.Sheets("Graph").ChartObjects(chartIterator). _
                            Chart.SeriesCollection(1).Values

For pointIterator = 1 To UBound(seriesArray)
       Dim value As Range
        Set value = Worksheets("Ranking").Range("F6", "F11")
        Dim valueR As Integer
        Set valueR = value.Cells.Item(1, pointIterator)

        If valueR(pointIterator) = 0 Then
           ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
           Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
           RGB(255, 0, 0)
        ElseIf valueR(pointIterator) = 1 Then
            ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
            Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
            RGB(255, 102, 102)
        ElseIf valueR(pointIterator) = 2 Then
            ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
            Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
            RGB(255, 128, 0)
        ElseIf valueR(pointIterator) = 3 Then
            ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
            Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
            RGB(255, 255, 0)
        ElseIf valueR(pointIterator) = 4 Then
            ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
            Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
            RGB(128, 255, 0)
        ElseIf valueR(pointIterator) = 5 Then
            ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
            Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
            RGB(0, 255, 0)

       End If

Next pointIterator

Next chartIterator

End Sub
4

1 に答える 1

1

ValueR整数として宣言したため、Setキーワードを使用してその値を割り当てることはできません。Select Caseさらに、ネストされたステートメントの代わりに aを使用するIf...ElseIf...と、読みやすくなります。また、ブロックを使用Withして、チャート/シリーズ/ポイント オブジェクトへの冗長な呼び出しを削除しました。

With ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
       Chart.SeriesCollection(1).Points(pointIterator).Interior
    Select Case ValueR
        Case Is = 0
           .Color = _
           RGB(255, 0, 0)
        Case 1
            .Color = _
            RGB(255, 102, 102)
        Case 2
            .Color = _
            RGB(255, 128, 0)
        Case 3
            .Color = _
            RGB(255, 255, 0)
        Case 4
            .Color = _
            RGB(128, 255, 0)
        Case 5
            .Color = _
            RGB(0, 255, 0)
     End Select
 End With
于 2013-05-29T14:06:56.890 に答える