1. Excelシートの説明
チャートを作成するプログラムの説明と動作確認をします。動作確認に使うExcelは以下のようになります。
やりたいことは、
- チャートの作成
- チャートの削除
- チャートのデータ入力方法の確認
- チャート作成の時間
そのために、「チャート作成」「チャート削除」のボタンを置きます。さらに、 A1~A20にRAND()で作った数値を入れておきます。これは、チャートで表示するためのデータです。
2. プログラムの説明
「チャート作成」ボタンのプログラムです。Timer関数を使って、プログラムの実行開始時間と実行終了時間を記録して、実行時間を計算します。その間にfor文でCreateChart()関数を実行します。これがチャートを作成する関数になっていて、繰り返し実行するのは実行時間を計算しやすいようにしています。最後に実行時間をM8に代入します。
Private Sub Create_Chart_Button_Click()
Dim i As Integer
Dim j As Integer
Dim startTime As Variant
Dim stopTime As Variant
Dim exeTime As Variant
startTime = Timer
For i = 0 To 2
For j = 0 To 50
Call CreateChart(i, j)
Next
Next
stopTime = Timer
exeTime = stopTime - startTime
Range("M8") = "実行時間は" & exeTime & "秒"
End Sub
「チャート削除」ボタンのプログラムです。シート上にあるチャートをすべて削除する関数を呼び出します。
Private Sub chart_Delete_Button_Click()
ActiveSheet.ChartObjects.Delete
End Sub
チャートを作成する関数です。AddChart関数でチャートを追加します。引数は順番に、チャートタイプと、場所(Left, Top),サイズ(Width, Height)を指定します。 次に、SeriseCollection, NewSeriesを変数に入れます。デバッグしやすいように一つずつ変数に入れています。最後にチャートにデータを指定します。 ここで、指定する方法を3つ試しています。
- シート上のRangeを指定して配置する方法
- Stringで指定する方法
- Arrayで指定する方法
Public Sub CreateChart(x_index As Integer, y_index As Integer)
Dim size As Integer
Dim ShapeObj As Shape
Dim ns As Series
Dim sc As SeriesCollection
size = 200
Set ShapeObj = ActiveSheet.Shapes.AddChart(xlLine, x_index * size, y_index * size, size, size)
Set sc = ShapeObj.Chart.SeriesCollection
Set ns = ShapeObj.Chart.SeriesCollection.NewSeries
' ns.Values = Range("A1:A20")
' ns.Values = "{ 0.39027587 , 0.177445453 , 0.216884755 , 0.923649472 , 0.971322831 , 0.261088821 , 0.974577475 , 0.913186582 ," _
' & " 0.366751825 , 0.311130149 , 0.179628318 , 0.3769544 , 0.710572627 , 0.370327454 , 0.491738795 , 0.604844844 ," _
' & " 0.224992757 , 0.182349875 , 0.209868295 , 0.400079373 }"
ns.Values = Array(0.39027587, 0.177445453, 0.216884755, 0.923649472, 0.971322831, 0.261088821, 0.974577475, 0.913186582, _
0.366751825, 0.311130149, 0.179628318, 0.3769544, 0.710572627, 0.370327454, 0.491738795, 0.604844844, _
0.224992757, 0.182349875, 0.209868295, 0.400079373)
End Sub
3.実行結果
チャートを3 x 51個配置した結果です。実行時間は「0.746秒」となっていました。図を配置するという動作にはこれくらい時間がかかることがわかりました。実際にこのプログラムを応用するためには、ここから軸を追加したり、Seriesを増やしていくことになるが、実行時間を抑えるようにデバッグしながらコーディングしていきます。
データの入力方法で実行時間が大きく変動するかを調べたかったが、あまり差はなさそうだったので、データ読み出しとの相性の良い方法を選んで使いたいと思います。
データの入力方法で実行時間が大きく変動するかを調べたかったが、あまり差はなさそうだったので、データ読み出しとの相性の良い方法を選んで使いたいと思います。


0 件のコメント:
コメントを投稿