『自動計算のOFFの仕様について』(フリオ)
ファイルの計算が実行されると重たいので手動計算にしています。しかし、ファイルを開いた時の最初の1回だけ自動で計算されてしまいます。そのため、開く時に重くなってしまいます。開く時も計算させない方法はありますでしょうか?
以下が構文です。
ThisWorkbookに
Private Sub Workbook_Open()
'データシートを手動計算にさせる
ThisWorkbook.Worksheets("データ").EnableCalculation = False
End Sub
リストシートに
Private Sub CommandButton1_Click()
ThisWorkbook.Worksheets("データ").EnableCalculation = True
ThisWorkbook.Worksheets("データ").EnableCalculation = False
End Sub
となっており、コマンドボタンを押したときだけ計算するようにしています。
また、Application.Calculation = xlManualを使用した方法を試して思い通りの動作になりましたが、他のファイルも手動計算になると知って断念しました。
よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
起動時にxlCalculationManualにして、
終了時にxlCalculationAutomaticに戻す。
じゃ駄目なんですか?
そのブック起動時に他のブックを開かなければ良い話ですけれど。
(ゆたか) 2025/04/25(金) 13:25:22
確かにそれがよさそうですが、ファイルの修正が発生した時に他の人に修正できなくなると思っています。
ですので、まだ簡単な方の関数を使用しています。
ゆたか様
他のファイルも開くことがあるので他のファイルに影響するxlCalculationManualは使えないもしれません。
(フリオ) 2025/04/25(金) 15:52:01
Excelを開く → [ファイル] → [オプション] → [数式] →
「ブックの計算」を 「手動」に設定すると
これで自動計算されなくなる。
コマンドボタンを押したときだけ
自動計算するようにするようにする。
Private Sub CommandButton1_Click()
Dim calcSetting As XlCalculation
' 現在の計算モードを保存(他ブックへの影響防止) calcSetting = Application.Calculation
' 一時的に自動計算にして再計算を実行 Application.Calculation = xlCalculationAutomatic ThisWorkbook.Worksheets("データ").Calculate
' 計算モードを元に戻す(手動に) Application.Calculation = calcSetting End Sub
(暇な人) 2025/04/25(金) 16:07:45
やり方が悪いのか最初はいいのですが、2回目以降は自動計算に戻ります。
また、他のブックも手動計算になります。
(フリオ) 2025/04/30(水) 07:30:51
該当ブックを開くためだけの専用ブックを作るのはどうでしょうか? 新しいブックにこんなマクロを仕掛けます。
Private Sub Workbook_Open() Application.Calculation = xlManual Workbooks.Open Filename:="該当ブックのフルパス・名前" Application.Calculation = xlAutomatic ThisWorkbook.Close False End Sub
簡単な検証ではうまくいきました。 尚、最後の ThisWorkbook.Close False があるとマクロを無効にして開かないとマクロの修正などが出来ないので うまくいくまではコメントアウトしておくほうがいいかもしれません。 (純丸) 2025/05/01(木) 12:16:25
でVBAを以下のように修正するではどうでしょうか ?
Private Sub CommandButton1_Click()
With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationAutomatic ThisWorkbook.Worksheets("データ").Calculate .Calculation = xlCalculationManual .EnableEvents = True .ScreenUpdating = True End With End Sub
(暇な人) 2025/05/01(木) 14:21:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.