Board logo

標題: [發問] 計算模式手動,轉寫資料問題 [打印本頁]

作者: blue2263    時間: 2016-2-23 12:56     標題: 計算模式手動,轉寫資料問題

請教大大
在程式頭部加入,計算模式改為手動;尾部改回自動
如程式中間有轉寫資料的語句,有需要再前列,加入重新計算等的語句嗎?
還請大大幫忙解惑,謝謝
作者: GBKEE    時間: 2016-2-23 13:54

回復 1# blue2263
試試看
  1. Option Explicit
  2. Sub Ex()
  3.         Application.Calculation = xlManual
  4.         [A1] = ""
  5.         With [A2]
  6.             .Cells = ""
  7.             .Cells = "=A1*5"  '公式
  8.             MsgBox .Value
  9.             [A1] = 10
  10.             .Calculate             '[A2]的計算
  11.             MsgBox .Value
  12.         End With
  13. End Sub
複製代碼

作者: yen956    時間: 2016-2-23 13:54

Application.Calculation = xlManual       '手動
    Application.Calculation = xlAutomatic    '自動
作者: blue2263    時間: 2016-2-23 16:56

G大 Y大你好
我知道的更改為手動是下面這行,與 G大 Y大的不一樣,請教主要用途差異在那邊?
Application.Calculation = xlCalculationManual '計算模式為手動
Application.Calculation = xlManual       '手動
作者: blue2263    時間: 2016-2-23 17:33

G大你好

再將函數公式轉寫為值時,G大是用   .Calculate
我是加入,下面這一句程式碼,我的用法正確嗎?

        '計算工作表,等待計算結束後,再進行下一步
           Application.Calculate '計算工作表
           Do Until Application.CalculationState = xlDone
           DoEvents
           Loop

Sub ex()
    Application.Calculation = xlCalculationManual '計算模式為手動
        With Sheets("分析")
        首列 = .Range("首列")
        欄號 = .Range("欄號")
        尾列 = Cells(Rows.Count, 1).End(xlUp).Row '由下往上找最後一列資料
        尾欄 = Cells(尾列, Columns.Count).End(xlToLeft).Column '由右往左找
        '貼上公式1
        .Range("a" & 尾列 & ":c" & 尾列).Copy
        .Range("a" & 首列 & ":c" & 尾列 - 2).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        '貼上公式2
        .Range(Cells(尾列, 欄號), Cells(尾列, 尾欄)).Copy
        .Range(Cells(首列, 欄號), Cells(尾列 - 2, 尾欄)).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        
        '計算工作表,等待計算結束後,再進行下一步
           Application.Calculate '計算工作表
           Do Until Application.CalculationState = xlDone
           DoEvents
           Loop

         '函數公式轉寫為值
        .Range("a" & 首列 & ":c" & 尾列 - 2) = .Range("a" & 首列 & ":c" & 尾列 - 2).Value
        .Range(Cells(首列, 欄號), Cells(尾列 - 2, 尾欄)) = .Range(Cells(首列, 欄號), Cells(尾列 - 2, 尾欄)).Value
        End With
    Application.Calculation = xlCalculationAutomatic '計算模式為自動
End Sub
作者: GBKEE    時間: 2016-2-23 20:37

回復 5# blue2263

試試看,是否如此
  1. '函數公式轉寫為值
  2.          .Range("a" & 首列 & ":c" & 尾列 - 2).Calculate
  3.          .Range(Cells(首列, 欄號), Cells(尾列 - 2, 尾欄)).Calculate
  4.          .Range("a" & 首列 & ":c" & 尾列 - 2) = .Range("a" & 首列 & ":c" & 尾列 - 2).Value
  5.          .Range(Cells(首列, 欄號), Cells(尾列 - 2, 尾欄)) = .Range(Cells(首列, 欄號), Cells(尾列 - 2, 尾欄)).Value
複製代碼

作者: blue2263    時間: 2016-2-24 07:02

回復 6# GBKEE


    了解,謝謝G大解答




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)