アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

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



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

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

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
    • good
    • 0
この回答へのお礼

ありがとうございました。イメージしていた物ができるようになりました。今後はデータをAccessから取得できるようにしていきたいと思います。また機会があればいろいろと教えてください。ありがとうございました。

お礼日時:2001/11/18 09:07

>今後はデータをAccessから取得できるようにしていきたいと思います。

また機会があればいろいろと教えてください。
どうぞどうぞ、Accessの質問には答える人が多いから、すぐに解決すると思いますよ。

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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!