OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VB6.0でMSChartをタイマーを使い徐々にグラフを伸ばしたい。

  • 困ってます
  • 質問No.170093
  • 閲覧数816
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 8% (1/12)

VB6.0でMSChartをタイマーを使い徐々にグラフを伸ばしたいのですが、上手くいきません。コマンドボタンを使いクリックしたと同時にタイマーを作動させて、ある値までグラフを増加させたいと思っているのですが、初心者同然なので詳しくお願いします。
Dim dat(4, 3) As Integer
Dim a As Long

Private Sub Command1_Click()
With MSChart1
.chartType = VtChChartType3dBar
.ColumnCount = 3
.RowCount = 4

For i = 1 To .RowCount
For j = 1 To .ColumnCount
.Column = j
.Row = i
.Data = dat(i, j)
Next j
Next i
.DataGrid.ColumnLabel(1, 1) = "(1)"
.DataGrid.ColumnLabel(2, 1) = "(2)"
.DataGrid.ColumnLabel(3, 1) = "(3)"
.DataGrid.RowLabel(1, 1) = "1月~3月"
.DataGrid.RowLabel(2, 1) = "4月~6月"
.DataGrid.RowLabel(3, 1) = "7月~9月"
.DataGrid.RowLabel(4, 1) = "10月~12月"
.Visible = True
End With

Timer1.Enabled = True

End Sub

Private Sub Form_Load()
a = 0
MSChart1.Visible = False

End Sub

Private Sub MSChart1_OLEStartDrag(Data As MSChart20Lib.DataObject, AllowedEffects As Long)
End Sub

Private Sub Timer1_Timer()
a = a + 10
dat(1, 1) = a: dat(1, 2) = 100: dat(1, 3) = 110
dat(2, 1) = 30: dat(2, 2) = 110: dat(2, 3) = 110
dat(3, 1) = 40: dat(3, 2) = 120: dat(3, 3) = 110
dat(4, 1) = 50: dat(4, 2) = 130: dat(4, 3) = 110

If a = 100 Then
Timer1.Enabled = False
End If
End Sub
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

データセットがボタンを押した時になってました。

一定間隔でグラフを伸ばすのであれば、
定期間隔でのイベント=タイマーイベント
で行うべきです。

ちょっと改造してみました。

Dim dat(4, 3) As Integer
Dim a As Long

Private Sub Command1_Click()
  'チャート初期設定
  With MSChart1
    .chartType = VtChChartType3dBar
    .ColumnCount = 3
    .RowCount = 4

    .DataGrid.ColumnLabel(1, 1) = "(1)"
    .DataGrid.ColumnLabel(2, 1) = "(2)"
    .DataGrid.ColumnLabel(3, 1) = "(3)"
    .DataGrid.RowLabel(1, 1) = "1月~3月"
    .DataGrid.RowLabel(2, 1) = "4月~6月"
    .DataGrid.RowLabel(3, 1) = "7月~9月"
    .DataGrid.RowLabel(4, 1) = "10月~12月"
    
  End With
  
  'タイマー起動
  Timer1.Enabled = True
End Sub

Private Sub Form_Load()
  a = 0            'タイマカウンタ初期化
  MSChart1.Visible = False  'チャート不可視
  Timer1.Enabled = False   'タイマー使用不可
  Timer1.Interval = 1000   '1000ms(1秒)ごとに更新
End Sub

Private Sub Timer1_Timer()
  Dim i  As Long
  Dim j  As Long
  
  'セットする値の作成
  a = a + 10
  dat(1, 1) = a: dat(1, 2) = 100: dat(1, 3) = 110
  dat(2, 1) = 30: dat(2, 2) = 110: dat(2, 3) = 110
  dat(3, 1) = 40: dat(3, 2) = 120: dat(3, 3) = 110
  dat(4, 1) = 50: dat(4, 2) = 130: dat(4, 3) = 110

  With MSChart1
    'データセット
    For i = 1 To .RowCount
      For j = 1 To .ColumnCount
        .Column = j
        .Row = i
        .Data = dat(i, j)
      Next j
    Next i
    
    'もし不可視なら表示する
    If Not .Visible Then
      .Visible = True
    End If
    '更新した値を画面に反映
    .Refresh
    

  End With
  
  If a = 100 Then
    Timer1.Enabled = False
  End If
End Sub
お礼コメント
sasamori

お礼率 8% (1/12)

ありがとうございました。イメージしていた物ができるようになりました。今後はデータをAccessから取得できるようにしていきたいと思います。また機会があればいろいろと教えてください。ありがとうございました。
投稿日時 - 2001-11-18 09:07:00
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

>今後はデータをAccessから取得できるようにしていきたいと思います。また機会があればいろいろと教えてください。 どうぞどうぞ、Accessの質問には答える人が多いから、すぐに解決すると思いますよ。 コメントからすると解決したのですか? それともまだ問題があるのですか? 解決したのなら、別にポイントはいらないので、締め切りだけはするようにしてくださいね。 解決してないのなら、解決できて ...続きを読む
>今後はデータをAccessから取得できるようにしていきたいと思います。また機会があればいろいろと教えてください。
どうぞどうぞ、Accessの質問には答える人が多いから、すぐに解決すると思いますよ。

コメントからすると解決したのですか?
それともまだ問題があるのですか?

解決したのなら、別にポイントはいらないので、締め切りだけはするようにしてくださいね。
解決してないのなら、解決できてない部分を書き込んでくださいね。
もしその解決してない部分が、この問題とは別の部分であれば、新規に投稿してくださいね。

それでは がんばってください。。。


このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ