任意の数の辞書 (各辞書はグラフ上の線を表す) に基づいて 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