VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -