前提・実現したいこと
vbaで複数データの散布図を自動作成するツールを作っています。
データが1000近くあるため、重すぎて応答なしになってしまいます。
発生している問題・エラーメッセージ
vbaが重くて動かない
該当のソースコード
vba
1Sub 散布図作成() 2 3 4Application.ScreenUpdating = False 5 6 7Dim ch As Chart 8Set ch = ActiveSheet.ChartObjects.Add(10, 0, 400, 300).Chart 9ch.ChartType = xlXYScatterLinesNoMarkers 10 11 12 13 14With ch 15 16 .HasTitle = True 17 .ChartTitle.Text = "test" 18 19 .HasLegend = True 20 .Legend.Position = xlLegendPositionBottom 21 22End With 23 24For i = 0 To 12 25 26 With ch.SeriesCollection.NewSeries 27 .XValues = Range(Cells(68, 7), Cells(Rows.Count, 7)) 28 .Values = Range(Cells(68, 10 + 7 * i), Cells(Rows.Count, 10 + 7 * i)) 29 .Name = Cells(i + 2, 1) 30 .MarkerStyle = xlNone 31 .MarkerBackgroundColor = i + 1 32 End With 33 34 With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(i + 1) 35 .MarkerStyle = xlNone 'マーカーを非表示 36 End With 37 38Next 39 40End Sub 41 42
試したこと
エクセル内の数式はすべて数値に置き換えました。
画面の更新をオフにしました。
応答なしのままです。
> 重すぎて応答なしになってしまいます。
しばらく待てば処理が終わりませんか?
読み込むデータを少なくして(iを0to3ぐらい)待ったところ3分ぐらいでグラフが完成しました。しかしそのあとグラフの軸を編集しようとすると一個直すのに30秒ほどかかってしまいます。何が原因でこんなに遅くなってしまうのでしょうか。
データが12列でも8分ほどで完成しました。ただそのあと軸をいじろうとするとかなり時間がかかってしまいます。
時間はかかるものの動作はしたのですね?状況を質問に追記されると良いかと思います。
データが不明なため分かりませんが、VBAでは動作が重くなるのは仕方がないことかと思います。(マシンスペックにも依るかもしれません)
Python等で処理した方が速くなることが多いでしょう。
ありがとうございます。質問の方自己解決しました。

回答1件
あなたの回答
tips
プレビュー