-PR-
解決済み

Excel97のマクロの高速化

  • 困ってます
  • 質問No.22883
  • 閲覧数96
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 20% (56/270)

Excel97で、マクロをなるべく高速化する一般的な
方法を教えて下さい。
画面表示の追随を抑制して高速化する方法が
あると聞いたのですが・・・。他の方法でも
よいのでお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル8

ベストアンサー率 23% (7/30)

画面表示を止めるのは
Application.ScreenUpdating = False
でできます。これをやると結構早くなりますよ。

あとはセルに値を書き込んだり読んだりする時に
セルを選択してから読み書きするのではなくて
直接指定すると早くなります。

Cells(A, 1).Select
Selection.Value = hogehoge
     ↓
Cells(A, 1).Value = hogehoge

といった感じです。
関連するQ&A
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.2
レベル8

ベストアンサー率 5% (1/18)

セルを見に行く回数をできるだけ減らした方がいいみたいっすよ。 同じセルのデータを使うのに、何回も見に行くと処理が遅くなるみたいで、 a = cells(1,1).value b = cells(1,1).value * 2 c = cells(1,1).value * 3 を a = cells(1,1).value b = a * 2 c = a * 3 にしたら、処理 ...続きを読む
セルを見に行く回数をできるだけ減らした方がいいみたいっすよ。
同じセルのデータを使うのに、何回も見に行くと処理が遅くなるみたいで、

a = cells(1,1).value
b = cells(1,1).value * 2
c = cells(1,1).value * 3



a = cells(1,1).value
b = a * 2
c = a * 3

にしたら、処理が早くなったことがあるんだけど・・・。
これって当たり前すか?


  • 回答No.3
レベル14

ベストアンサー率 36% (1782/4883)

画面表示のoffは1番さんの回答通りです。 またマクロの自動記録を使うと非常に無駄の多いコードに なるので、無駄な部分はできるだけ省略しましょう。 セル等ををいちいちselectやactiveteする必要は殆ど ありません(画面の表示をoffにしてても無駄にコード を消化していくので遅くなります)。 他の一工夫としては 選択するときはifよりはselect構文で、 ループさせるときはf ...続きを読む
画面表示のoffは1番さんの回答通りです。
またマクロの自動記録を使うと非常に無駄の多いコードに
なるので、無駄な部分はできるだけ省略しましょう。
セル等ををいちいちselectやactiveteする必要は殆ど
ありません(画面の表示をoffにしてても無駄にコード
を消化していくので遅くなります)。

他の一工夫としては
選択するときはifよりはselect構文で、
ループさせるときはfor each next(でしたっけ?)構文の処理が若干早いようです。
  • 回答No.4
レベル13

ベストアンサー率 46% (643/1383)

他の皆さんの仰ってるとおりですが、アルゴリズム面に限っていえば、とりあえずはループの中身を最適化してみるのがいいでしょう。 For ~ Next とか、Do ~ Loopの中身には、出来るだけ無駄な処理を書かない。ループの外に出せるものは出してしまう。ってことを意識しながらプログラムを書くと、そこそこ高速なものが出来上がるように思います。
他の皆さんの仰ってるとおりですが、アルゴリズム面に限っていえば、とりあえずはループの中身を最適化してみるのがいいでしょう。
For ~ Next とか、Do ~ Loopの中身には、出来るだけ無駄な処理を書かない。ループの外に出せるものは出してしまう。ってことを意識しながらプログラムを書くと、そこそこ高速なものが出来上がるように思います。
  • 回答No.5
レベル11

ベストアンサー率 49% (139/279)

皆さんのおっしゃることにプラスして、 セルの値を変更すると、自動的にエクセルの 計算が動く場合がありますので、 Application.Calculation = xlCalculationManual を行って、自動計算をとめて、 マクロ終了前に Application.Calculation = xlCalculationAutomatic で自動計算するように戻 ...続きを読む
皆さんのおっしゃることにプラスして、
セルの値を変更すると、自動的にエクセルの
計算が動く場合がありますので、

Application.Calculation = xlCalculationManual

を行って、自動計算をとめて、
マクロ終了前に

Application.Calculation = xlCalculationAutomatic

で自動計算するように戻してやってください。
なお、途中で、計算をやらせたい場合は、

Calculateメソッド

で、強制計算させることもできます。
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ