作者foolkids (翼をください)
看板Office
標題[問題] Application.Calculation的重算設定?
時間Tue Apr 14 09:50:31 2015
軟體:Office Excel
版本:2010
之前設置了一個巨集,依據切換工作表來設定是否開啟公式自動運算,如下:
===========================================================================
Private Sub Worksheet_Activate() '選擇此工作表(A)就為手動運算
Application.Calculation = xlCalculationManual
End Sub
===========================================================================
Private Sub Worksheet_Deactivate() '不選擇此工作表(A)就自動運算
Application.Calculation = xlCalculationAutomatic
End Sub
===========================================================================
現在問題是:只要執行了 Application.Calculation = xlCalculationAutomatic
Excel就會立即全部重新計算一次,就算實際上我並未有任何資料修改。
有找到參數:Application.CalculationState,可判算目前是否有尚未計算的資料。
本想結合兩個參數來達到下列目的:
┌>有修改就重算
選擇工作表(A) ─> 手動運算 ─> 選擇工作表(B) ─> 自動運算 ─┤
└>沒修改不重算
但是一旦變更為自動運算後,好像沒有辦法再插入一個判斷式來決定是否重算...
不知有無方法可解決呢? 謝謝!!
--
┌─────────────────────────────┐
│就這樣,終於到了啟程的日子。
│
│和來機場送行的朋友們說著玩笑話,其實內心恍恍惚惚像在作夢。
│
│也似乎是因為,
為了走到「出發」這一步,耗盡了全部心力。 │
└─────────────────石田裕輔《不去會死!》─┘
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.149.121
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1428976234.A.529.html
→ soyoso: 那在Workbook_SheetChange內寫給布林值,宣告在模組處宣告 04/14 10:38
→ soyoso: 個 04/14 10:38
→ foolkids: 不太瞭解 @_@ 04/14 15:11
謝謝蘇大! 看懂了,但是後續有個問題:
我在活頁簿的部分也寫了一樣的東西,透過蘇大的方法,
如果活頁簿沒有任何變動時,當取消選擇該活頁簿時就不會切換運算方式;
但實際上,巨集所在活頁簿只是使用者每天使用的眾多活頁簿其中一個,
當他切去其他任意表格的時候仍需要其他表格後續有計算功能。
也就是說一定要切成自動運算,因為使用者可能要處理其它活頁簿的資料。
目前就只有這個設定 Application.Calculation = xlCalculationAutomatic
會連帶重算讓人很困擾。是否還有更佳解呢? 麻煩了 @_@
※ 編輯: foolkids (59.120.249.136), 04/14/2015 16:44:03
→ soyoso: 那從thisworkbook內Workbook_SheetDeactivate或是 04/14 16:47
→ soyoso: Workbook_SheetActivate來下手,試試 04/14 16:48
目前就是寫在 Workbook_SheetDeactivate 及 Workbook_SheetActivate
但是仍無法讓Application.Calculation = xlCalculationAutomatic後的重算取消 @@
※ 編輯: foolkids (60.249.149.121), 04/15/2015 10:29:52
→ soyoso: 原文寫是Worksheet_Activate 及 Worksheet_Deactivate 04/15 10:36
→ soyoso: 所以是寫在Workbook_SheetActivate還是Worksheet_Activate 04/15 10:36