excelでVBAを使用し、
『もともと存在するデータを元にグラフ(スピードメータ)を動かす』 といった主旨のものを作成しております。
データが100ms間隔で取得したものなので、VBA上のデータ読み込みも100msで行っています。
現状のプログラムでも意図した動作は実現できているのですが、グラフが変化がカキカキしており滑らかに動きません。
グラフは下記のページのサンプルを使用させていただいております。
http://norih.s17.xrea.com/popgraph.htm
値を手入力してグラフを動かすと滑らかに動くのですが、
VBAで下記プログラムを使い、
グラフが参照している表に値を入力 → グラフを更新するという流れをとると、グラフの変化が動きがカキカキしてしまいます。
滑らかに動かす方法もしくは、グラフを元にしてスピードメータやボリュームバー等を動作させるVBA以外のツールをご存じでしたらご教示ください。
VBA
1Option Explicit 2 3Dim milli As Long 'ミリ秒 4Dim last_milli As Long '時間差測定用 5Dim milli_count As Long '100ms毎にカウントアップ 6Dim speed As Long '読み込み値 7 8 9Sub グループ化2050_Click() 10 Dim cht As chart 11 Set cht = ThisWorkbook.Sheets("グラフ&メーター").ChartObjects("speed_chart").chart 12 13 '動きが滑らかになるかと思って追加してみた--------------------- 14 cht.Refresh 15 DoEvents 16 DoEvents 17 '--------------------------------------------------------------- 18 19 Do While milli_count < 200 'データはとりあえず200個読む 20 21 milli = GetMilliSecond '別モジュールで時間計測(ミリ秒) 22 23 If milli - last_milli > 100 Then ’100msでデータを読み込み 24 speed = ThisWorkbook.Worksheets("sheet1").Cells(milli_count + 2, 12).Value ’順番にデータを読む 25 Sheets("グラフ&メーター").Cells(15, 2) = milli_count 26 Sheets("グラフ&メーター").Cells(10, 2) = speed ’表にデータを入力 27 milli_count = milli_count + 1 ’読み込むデータの行番号を更新 28 last_milli = milli 29 cht.Refresh ’グラフを更新 30 DoEvents 31 DoEvents 32 End If 33 Loop 34 35End Sub 36