投稿日 | : 2004/05/06(Thu) 15:19 |
投稿者 | : るしぇ |
Eメール | : |
URL | : |
タイトル | : Re: お手上げデス(>_<)グラフ再表示時のRowLabelの指定について |
' こちらの環境(Win2000(SP4) VB6.0 Pro(SP5) MSChart(Ver6.0.88.4))でエラーの再現に成功しました。
' (MSChart の Ver はコンポーネントの追加ダイアログから参照してるファイルパスが分かりますので
' ファイルのバージョン情報で見て下さい。)
' ただし条件がありまして、プログラム起動直後に Command3→1→2 もしくは Command3→1→3
' の順番で実行する必要があります。よこさんの環境下で起こる Command1→1 の繰り返し
' ではエラーは起こりませんでした。
' 原因は
' Me.MSChart1.ChartData = GData
' の処理が上手くいっておらず、ラベル変更時に MSChart1.DataGrid を参照できないようです。
' …があくまで予想でしかないです。1回上手くいきだすとずーっとエラー出ません。(※こちらの環境では)
' 原因をはっきり解明する事は出来てませんが、もしかしたらこれで回避できるかも?。試してみて下さい。
'[VB6.0(SP5)]
Option Explicit ' 変数の明示的な宣言。
'Dim data(120, 3) As Integer
Private GData(119, 0) As Integer
Private Sub Command1_Click()
On Error GoTo ErrTrap
Dim i As Integer ' ←変数の宣言が抜けてました。
With MSChart1
.Visible = False ' 最後の .Visible = True の行の意味がグラフを非表示にして処理速度向上なら抜けている。
.chartType = VtChChartType2dLine
.RowCount = 120
For i = 1 To 119
GData(i, 0) = i + 50
Next i
.ChartData = GData ' With の中で MSChart1 から参照する必要なし。ってゆーか119回セットする必要あり?1回でいいでしょ?
With .DataGrid ' こういった使い方もできます。
For i = 1 To 120
.RowLabel(i, 1) = Format(i, "000")
Next i
End With
.Visible = True
End With
Exit Sub
ErrTrap:
With Err
If .Number = 1119 Then
OnErrSub
Command1_Click
Else
.Raise .Number, .Source, .Description
End If
End With
End Sub
Private Sub Command2_Click()
On Error GoTo ErrTrap
With MSChart1.DataGrid
Debug.Print Now
Debug.Print "RC : " & .RowCount
Debug.Print "0,0 : " & .RowLabel(0, 0)
Debug.Print "1,1 : " & .RowLabel(1, 1)
Debug.Print "RLC : " & .RowLabelCount
.RowLabel(1, 1) = "Test"
.RowCount = 10
.RowLabel(1, 1) = "Test"
Debug.Print "RC : " & .RowCount
Debug.Print "0,0 : " & .RowLabel(0, 0)
Debug.Print "1,1 : " & .RowLabel(1, 1)
Debug.Print "RLC : " & .RowLabelCount
End With
Exit Sub
ErrTrap:
With Err
If .Number = 1119 Then
OnErrSub
Command2_Click
Else
.Raise .Number, .Source, .Description
End If
End With
End Sub
Private Sub Command3_Click()
On Error GoTo ErrTrap
Dim i As Integer
With MSChart1
With .DataGrid
Debug.Print Now
Debug.Print "RC : " & .RowCount
Debug.Print "0,0 : " & .RowLabel(0, 0)
Debug.Print "1,1 : " & .RowLabel(1, 1)
Debug.Print "RLC : " & .RowLabelCount
.RowLabel(1, 1) = "Test"
End With
For i = 1 To 119
GData(i, 0) = i + 10
Next i
.ChartData = GData
With .DataGrid
.RowLabel(1, 1) = "Test"
Debug.Print "RC : " & .RowCount
Debug.Print "0,0 : " & .RowLabel(0, 0)
Debug.Print "1,1 : " & .RowLabel(1, 1)
Debug.Print "RLC : " & .RowLabelCount
End With
End With
Exit Sub
ErrTrap:
With Err
If .Number = 1119 Then
OnErrSub
Command3_Click
Else
.Raise .Number, .Source, .Description
End If
End With
End Sub
Private Sub OnErrSub()
Debug.Print "******* Error : 1119 *******"
Me.MSChart1.ChartData = GData
MsgBox "更新処理が失敗しました。再度ボタンを押してみて下さい。"
End Sub
Private Sub Form_Load()
Me.MSChart1.ChartData = GData ' 事前にやっててもエラー回避できず。
End Sub