2

任意の数の辞書 (各辞書はグラフ上の線を表す) に基づいて XY 散布図を生成する関数があり、それぞれに日付キーと数値が含まれています。これまでのところ、値は Y 軸で機能しているように見えますが、日付軸 (X) は壊れているようです。辞書からシリーズをグラフに追加するたびに、特に散布図が必要な場合は、棒グラフに強制されます。割り当て後に散布図に戻すと、日付軸の表示が完全に拒否されます。

下記は用例です。

こんなグラフにしたい ここに画像の説明を入力

日付を使わないようにすると、グラフは次のようになります

ここに画像の説明を入力

系列のデータ型を具体的にxlDateにすると、グラフはこのように変化します。妙に棒グラフに変わった

ここに画像の説明を入力

xlDateを使用するように設定した後、具体的に散布図に戻すと、次のようになります

ここに画像の説明を入力

どんな助けでも大歓迎です。ここに私のVBAコードがあります

Sub GenerateProgressGraph()


Dim Dictionaries(1 To 2) As New Dictionary

    Dictionaries(1).Add DateValue("1/2/2012"), 1
    Dictionaries(1).Add DateValue("2/2/2012"), 2
    Dictionaries(1).Add DateValue("3/2/2012"), 3
    Dictionaries(1).Add DateValue("4/2/2012"), 4

    Dictionaries(2).Add DateValue("1/2/2012"), 1
    Dictionaries(2).Add DateValue("2/2/2012"), 1
    Dictionaries(2).Add DateValue("3/2/2012"), 3
    Dictionaries(2).Add DateValue("4/2/2012"), 4

    Call ProcessProgressGraph(Dictionaries)
End Sub

Sub ProcessProgressGraph(Dict() As Dictionary)

    Dim Graph As Shape
    Dim GraphRange As Range

    With ActiveSheet

        'set graph area
        Set GraphRange = Application.Range("E4:P21")

        'add a new chart
        Set Graph = Shapes.AddChart(xlXYScatterLinesNoMarkers, GraphRange.Left, _
                                    GraphRange.Top, GraphRange.Width, GraphRange.Height)

        With Graph.Chart

            With .Axes(xlCategory)
                .HasTitle = True
                .AxisTitle.Characters.Text = "Dates"
            End With

            .HasTitle = True
            .ChartTitle.Text = "Chart Title"
            .ChartType = xlXYScatterLinesNoMarkers

            'clear all chart data
            '(Excel has a tendency to give us silly resultsets by default)
            For Each srs In .SeriesCollection
                srs.Delete
            Next

            For Each Dictionary In Dict
                Dim ss As Series
                Set ss = .SeriesCollection.NewSeries
                ss.Name = "Values"
                ss.XValues = Dictionary.Keys
                ss.Type = xlDate
                .ChartType = xlXYScatterLinesNoMarkers 'this forces it back into a scatter plot since it auto makes a bar graph
                ss.Values = Dictionary.Items
            Next
        End With
    End With
End Sub
4

1 に答える 1