投稿時間: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
|