返回列表 上一主題 發帖

[發問] 如何才能,計算工作表,等待計算結東後,再進行下一步

[發問] 如何才能,計算工作表,等待計算結東後,再進行下一步

本帖最後由 blue2263 於 2014-3-15 22:32 編輯

請教高手大大
vba要如何才能實現,計算當前工作表,等計算結東後,再進行下一步
我是用(ActiveSheet.Calculate '計算當前工作表)程式碼,但是它沒辦法,
等待計算完成後,再進行下一步,
請教是否有其它做法及程式碼可用,謝謝

回復 1# blue2263

  Do Until Application.CalculationState = xlDone
  Loop
學海無涯_不恥下問

TOP

回復 2# Hsieh

感謝h版大回復
程式碼更改如下,但有些問題,就是重新計算過程中,游標如有點擊工作表畫面,會終止計算,造成無限回圈
請教要如何改善,謝謝!!
       Do Until Application.CalculationState = xlDone
        Application.Calculate '計算工作表
        Loop


附上文件檔案
問題附檔.rar (719.52 KB)

TOP

回復 3# blue2263
把這兩行加入適當位置試試看!!
(剛剛學來的, 本人還來不及試)
Application .Calculation = xlManual
Application .Calculation = xlAutomatic

靈感來自(本人剛貼的):
http://forum.twbts.com/thread-11578-1-1.html

TOP

回復 3# blue2263
試過了, 就是這兩行
Application.Calculation = xlManual
Application.Calculation = xlAutomatic

TOP

回復 5# yen956

謝謝y大回復
我不知程式碼要放在那才正確,我測試都不ok,還請指教幫忙,謝謝!!

TOP

本帖最後由 yen956 於 2014-3-16 19:51 編輯

回復 1# blue2263
【vba要如何才能實現,計算當前工作表,等計算結東後,再進行下一步】
我是用(ActiveSheet.Calculate '計算當前工作表)程式碼,但是它沒辦法,
等待計算完成後,再進行下一步


深感抱歉!! 我弄錯你的本意了,
我誤以為:先進行一些工作, 再重新計算所有的公式,
這兩行
Application.Calculation = xlManual
Application.Calculation = xlAutomatic
在這種情況用不上, 再度抱歉!!
要請版大幫忙啦!!

TOP

回復 7# yen956


   沒關係, 謝謝你的熱心幫忙

TOP

回復 3# blue2263
試試看
        Application.Calculate '計算工作表
        Do Until Application.CalculationState = xlDone
        DoEvents
        Loop
學海無涯_不恥下問

TOP

本帖最後由 blue2263 於 2014-3-17 07:48 編輯

回復 9# Hsieh

感謝h版主回復
測試後結果:重新計算過程中,游標如有點擊工作表畫面,雖然不會造成回圈錯誤,但會終止計算
造成後面,貼上值的資料錯誤,因為我工作表函數有很多,因此計算上較慢,所以會有這個問題,

之前測試,如果程式碼改為
    Application.Calculate '計算工作表
    ActiveWorkbook.Save'儲存檔案
                                                '貼上值
是可以逹到,強制計算後,正確貼上值的效果,
但想是否有更好的方法,因儲存檔案,會重新計算所有工作表,不能只計算當前工作表,感覺會比較慢
因此想尋求,是否有更好的作法

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題