• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA)

エクセルVBAのコードで処理を高速化する方法

このQ&Aのポイント
  • エクセルVBAのコードを実行すると処理が遅くなる場合、以下のコードを追加することで処理を高速化できます。
  • 1. `Application.ScreenUpdating = False` を追加する 2. データの範囲を絞る 3. ソートを高速化する 4. 不要な行を非表示にする 5. `Application.ScreenUpdating = True` を追加する
  • これらのコードを追加することで、エクセルVBAの処理速度を向上させることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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)
回答No.1

>For i = 0 To 31 以下を省いて実行しても処理が遅いか? ーー 前半は何がしたいのか。ソートだと思うが、どういうセル範囲のどういうソートか。 今までのソーとコード例に比べ記述が複雑なようだ。 エクセルのバージョンも書いてないが、2007以降に係わるものかな。 ーー 先生や、下請けに対するのように、コードだけ挙げて、読み解かして、結果がだけこうなるようにしろと言うのは、失礼ではないか。 自分で少しは変えてやってみたのか。

関連するQ&A