我想要的效果是,人為輸入不同的時間段,然后MSChart顯示相應時間段內的曲線。一共20條曲線。
但是在除錯時發現,顯示的曲線數量和Mydata(size,20)中的size一樣。這很奇怪,曲線數量不應該是20嗎?
我感覺是后面的.ColumnCount = Size有問題,但是發現只有.ColumnCount = Size時才能顯示曲線,如果改成.ColumnCount = 20之類的陳述句或者洗掉則一條曲線都無法顯示。
Dim MyData() As Single
ReDim MyData(Size - 1, 20) As Single '定義了20條曲線
For i = 0 To Size - 1
Sum = 0
For j = 0 To 19
Sum = Sum + Val(Data_Year(MinYear).Data_Month(MinMonth).Month_People(j).Lab)
MyData(i, j) = Sum '為每條曲線賦值
Next j
If MinMonth = 11 Then
MinYear = MinYear + 1
MinMonth = 0
Else
MinMonth = MinMonth + 1
End If
Next i
'波形圖外觀設定
With MSChart1
.Backdrop.Fill.Brush.FillColor.Set 255, 255, 255
.TitleText = "人員SE圖"
' '設定圖線的外觀
' '設定XY軸
.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
'// 設定最大值
'.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 10000 '設定橫軸標注最大值
.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 10 '設定縱軸標注最大值
'// 設定最小值
.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0
.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
'//
.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 20 'X軸主要網格數量
.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 'Y軸主要網格數量
.Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X軸次要網格數量
.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y軸次要網格數量
.Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
MSChart1.Plot.AutoLayout = False
MSChart1.Plot.UniformAxis = False
MSChart1.chartType = VtChChartType2dLine '設定圖形為二維散點圖
MSChart1.ChartData = MyData '資料
For i = 1 To 20
.Plot.SeriesCollection(i).LegendText = Data_Year(0).Data_Month(0).Month_People(i - 1).Name
Next i
For i = 1 To 20
.Plot.SeriesCollection(i).Pen.Width = 10
.Plot.SeriesCollection(i).Pen.Style = VtPenStyleSolid
Next i
For i = 1 To 20
.Plot.SeriesCollection(i).DataPoints(-1). _
DataPointLabel.LocationType = VtChLabelLocationTypeBelowPoint
Next i
.ColumnCount = Size ''洗掉或修改都無法顯示曲線
For k = 1 To Size
.Row = k
.RowLabel = Data_Year(kcountyear).date_year & "/" & Data_Year(kcountyear).Data_Month(kcountmonth).date_month
If kcountmonth = 11 Then
kcountyear = kcountyear + 1
kcountmonth = 0
Else
kcountmonth = kcountmonth + 1
End If
Next k
End With
uj5u.com熱心網友回復:
頂。。。不要沉啊,在線等
uj5u.com熱心網友回復:
在控制元件上雙擊,進入控制元件的屬性頁對話框,設定相關屬性。uj5u.com熱心網友回復:
您好,我今天試了一下在屬性頁中修改。但是發現屬性頁只能對繪圖的樣式修改,但是它里面的序列和ChartData繪制的曲線感覺沒有關系。。這個要怎么解。。uj5u.com熱心網友回復:
注釋掉所有On Error Resume Next陳述句,在VB6 IDE中運行,出錯后點擊除錯,游標會停在出錯的那條陳述句處,
或者
事先在懷疑可能有邏輯錯誤的陳述句處設定斷點,運行經過斷點時中斷,
此時可以在立即視窗中使用
?變數名
或
?函式名(函式引數)
或
程序名(引數)
輔助除錯。
uj5u.com熱心網友回復:
其實有可能是MSChart的bug,其實畫曲線這件事情自己倒騰一下也不是很難還都能按自己的要求來uj5u.com熱心網友回復:
你理解錯誤。Mydata(size,20) 中 size 是曲線數、20 是每條曲線上的點數目。ColumnCount、RowCount 建議顯式指定(試試在 ChartData 賦值之前/之后)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/54309.html
標籤:VB基礎類
上一篇:EXCEL VBA 陣列下邊界總是固定的數值如何自動修改
下一篇:VBA編程讀取相片中的數字
