- ベストアンサー
エクセルVBAのコードで処理を高速化する方法
- エクセルVBAのコードを実行すると処理が遅くなる場合、以下のコードを追加することで処理を高速化できます。
- 1. `Application.ScreenUpdating = False` を追加する 2. データの範囲を絞る 3. ソートを高速化する 4. 不要な行を非表示にする 5. `Application.ScreenUpdating = True` を追加する
- これらのコードを追加することで、エクセルVBAの処理速度を向上させることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
それで遅いというと,必ずしもそのマクロだけの問題じゃないんじゃないかな?とは思います。 まぁ,何が遅い原因なのかの追求はご自分でやっていただくとして,できるだけ手を打ってみると。 作成例: sub macro1() dim i as long application.screenupdating = false application.calculation = xlcalculationmanual application.enableevents = false activesheet.usedrange.entirerow.hidden = false range("A14:I46").sort key1:=range("B14"), order1:=xlascending, key2:=range("C14"), order2:=xlascending, header:=xlyes for i = 15 to 46 If cells(i, 7) = 0 Then cells(i, 7).entirerow.hidden = true next i application.enableevents = true application.calculation = xlcalculationautomatic application.screenupdating = true end sub #余談 描画抑制(screenupdating)とか諸々使いますが,これをしていると原因の追及には邪魔になるだけなので,原因を調べたいときは全て行わないでおきます。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
>For i = 0 To 31 以下を省いて実行しても処理が遅いか? ーー 前半は何がしたいのか。ソートだと思うが、どういうセル範囲のどういうソートか。 今までのソーとコード例に比べ記述が複雑なようだ。 エクセルのバージョンも書いてないが、2007以降に係わるものかな。 ーー 先生や、下請けに対するのように、コードだけ挙げて、読み解かして、結果がだけこうなるようにしろと言うのは、失礼ではないか。 自分で少しは変えてやってみたのか。