Board logo

標題: 為何Application.ScreenUpdating = False 畫面還會動 [打印本頁]

作者: PKKO    時間: 2014-8-11 16:40     標題: 為何Application.ScreenUpdating = False 畫面還會動

我的程式碼第一行就輸入
Application.ScreenUpdating = False

後面接著會開啟另外一個excel檔
然後從SHEET(1) ~SHEET(12)
分別切換著執行
但我發現畫面還是會動...(程式碼有點亂,不好意思)
有可能是甚麼原因導致的嗎?積分 & 成交的表皆無Application.ScreenUpdating =TRUE的指令

Sub autoRun()
'If Sheets(1).Cells(1, 1) = "xxx" Then Exit Sub

Application.ScreenUpdating = False
nowName = Application.ActiveWorkbook.Name
'判斷目前是否開啟
On Error Resume Next
    Windows("莊敬店開發.業績.出勤一覽表.xlsm").Activate
    If Err.Number = 9 Then GoTo F1
    AA = 1
    GoTo f2
F1: Workbooks.Open (Mid(ThisWorkbook.Path, 1, 31) & "2-會計\莊敬店開發.業績.出勤一覽表.xlsm")
    AA = 2
f2: Windows(nowName).Activate
    For i = 1 To Month(Date)

    Sheets(i).Activate
   
   Call 積分
   Windows(nowName).Activate
   Sheets(i).Activate
   Call 成交
   Next i
   '判斷是否需要關閉檔案
    'Call autoLock
f3: If AA = 1 Then
    Windows(nowName).Activate
    ElseIf AA = 2 Then
    Windows("莊敬店開發.業績.出勤一覽表.xlsm").Close saveChanges:=False
    End If
   
Sheets(Month(Date)).Activate
Application.ScreenUpdating = True
End Sub
作者: GBKEE    時間: 2014-8-12 08:41

回復 1# PKKO
你是如何執行的程式
如是vba 中按F8逐行執行程式看畫面是會改變
Application.ScreenUpdating = False 沒有作用的
作者: PKKO    時間: 2014-8-12 12:16

我是巨集直接整個執行,會發現他從Sheets(1)跳到目前月份的sheet
所以感覺速度有點慢
作者: luhpro    時間: 2014-8-14 01:31

回復 3# PKKO

感覺上是 Sheets(i).Activate 的關係,
你試試先不執行看看. (該行最前面加個 ; )

若你 Call 的副程式中有 Selection 之類需要標的 Sheet 為作動中(Active)的指令,
建議你改用 with 來索引相關物件就不需要先執行 Activate 了.

我的經驗是 : 執行過 Application.ScreenUpdating = False 後並非畫面就一定會不會變動了,
某些時候它還是會動給你看.
作者: PKKO    時間: 2014-8-14 09:32

回復 4# luhpro


  感謝,我了解您的意思了,我還不太會使用WITH 的方式,先爬個文,若有問題再提出,謝謝^_^




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