Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
起動時の処理
投稿日時: 19/09/27 10:20:37
投稿者: moug_tahara

お世話になります。
シート上の関数の計算が多く、EXCELの起動がとても遅くなった為、
普段使うときは「自動再計算」になるようにしたいのですが、
起動時だけは、数式の自動計算を止めたい場合、
どのようにすれば実現できますでしょうか。
 
vbaの処理中には、Application.Calculationを使いますが、
起動前の時には停止させて、起動されたら自動にする事は可能でしょうか。

回答
投稿日時: 19/09/27 10:59:27
投稿者: simple

Thisworkbookモジュールに

Private Sub Workbook_Open()
    Application.Calculation = xlCalculationManual
    Application.OnTime Now() + TimeValue("00:00:05"), "test"
End Sub
標準モジュールに
Sub test()
    Application.Calculation = xlCalculationAutomatic
End Sub
などとするのが、普通の発想かもしれないが、余り効果は無い気がする。
というのは、自動再計算で時間がかかるというよりも、
読み込み処理自体に時間がかかるのでしょうから。
それと、そもそもWorkbook_Openが起きるのは、読み込みが終わってからの気もする。
 
結果をお知らせください。

投稿日時: 19/09/27 12:58:02
投稿者: moug_tahara

ご回答いただき、ありがとうございます。
Thisworkbookモジュールおよび標準モジュールに追加して
起動してみましたが、結果変わりませんでした。
Workbook_Openが起きるのは、読み込みが終わってからですかね。

回答
投稿日時: 19/09/27 13:45:47
投稿者: simple

ああやっぱりね。検証報告ありがとうございます。
もともとExcelアプリを開いた情報で、
手動計算モードの状態で、そのブックを開いたらどうなりますか?
それでも時間がかかるとすれば、手は無いかもしれませんね。

回答
投稿日時: 19/09/27 13:58:40
投稿者: mattuwan44

あてずっぽうですが、
開いたときにマクロで自動計算に切り替えるなら、
 
保存するときに数式を文字列に変換して保存するとか、
計算結果を値にして入れなおして、計算式をシート上からなしにしておいて、
改めて、開いた後に数式をいれたらどうでしょうか?
 
基本、200行×30列程度しか使わないので、
改善するかよくわかってないですけど、
ときどき、シート上に数式を置きたくないという要望は、
掲示板上で見かけます。

投稿日時: 19/09/27 14:38:37
投稿者: moug_tahara

皆様、ご回答いただきありがとうございます。
手動計算にして立ち上げた際も、時間がかかってしまったので、
アクションを起こした際に、都度、値に置き換えてセットした方が
良いように思いました。
検証の方法についても教えていただき、ありがとうございました。