返回列表 上一主題 發帖

這種依時間運算的巨集要如何寫??

本帖最後由 藍天麗池 於 2015-1-6 10:36 編輯

回復 29# GBKEE

G大跟你請教一下,我有一個程式因為excel裡面的資料比較多,需要一直更新,但畫面會一直閃爍,我在網路上找了一下,說是要貼上下面的兩段程式碼,但我不確定貼在哪哩,請G大跟我說一下,感謝

Application.ScreenUpdating = False
Application.ScreenUpdating = True

我有幾段程式貼出來給G大看,在麻煩您跟我說一下,感謝

以下是sheet4
  1. Private Sub CommandButton1_Click()
  2.     Dim pTick As TTick
  3.     Dim I As Integer
  4.     I = 1
  5.     Sheet4.Range("g1:g2").Clear
  6.     Sheet4.Range("a3:f3").Clear
  7.     Sheet4.Range("a5:k90000").Clear
  8.       While Sheet4.Cells(2, I) <> ""
  9.         Status = SKQuoteLib_RequestTicks(I, Sheet4.Cells(2, I))
  10.         I = I + 1
  11.     Wend
  12. End Sub
  13. Private Sub Worksheet_Change(ByVal Target As Range)
  14.     Application.EnableEvents = False
  15.     If Not Intersect(Target, [B5:B90000]) Is Nothing Then
  16.         Range("H" & Target.Row).Formula = "=INT(RC[-6]/100)"
  17.       
  18.      ElseIf Not Intersect(Target, [F5:F90000]) Is Nothing Then
  19.         Range("I" & Target.Row).Formula = "=IF(RC[-6]=-9999.99,R[-3]C[-4],IF(RC[-4]=RC[-6],-RC[-3],IF(RC[-4]=RC[-6]-1,-RC[-3],IF(RC[-4]=RC[-6]-2,-RC[-3],IF(RC[-4]=RC[-6]-3,-RC[-3],IF(RC[-4]=RC[-6]-4,-RC[-3],IF(RC[-4]=RC[-6]-5,-RC[-3],IF(RC[-4]=RC[-5],RC[-3],IF(RC[-4]=RC[-5]+1,RC[-3],IF(RC[-4]=RC[-5]+2,RC[-3],IF(RC[-4]=RC[-5]+3,RC[-3],IF(RC[-4]=RC[-5]+4,RC[-3],IF(RC[-4]=RC[-5]+5,RC[-3],RC[-3])))))))))))))"
  20.      ElseIf Not Intersect(Target, [C5:C90000]) Is Nothing Then
  21.         Range("J" & Target.Row).Formula = "=IF(RC[-1]>0,RC[-4],R1C)"
  22.      ElseIf Not Intersect(Target, [D5:D90000]) Is Nothing Then
  23.         Range("K" & Target.Row).Formula = "=IF(RC[-2]<0,RC[-5],R1C[-1])"
  24.    End If
  25.    Application.EnableEvents = True
  26.         

  27. End Sub
複製代碼
以下是thisworkbook
  1. Option Explicit

  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3. Application.RTD.ThrottleInterval = 2000
  4. Application.Calculation = xlCalculationAutomatic
  5. End Sub

  6. Private Sub Workbook_Open()
  7. Const StartTime As Date = "08:45:00"

  8. Application.RTD.ThrottleInterval = 0
  9. Application.Calculation = xlCalculationManual

  10. Application.OnTime StartTime, "mySchedule"
  11. End Sub
複製代碼
以下是模組2
  1. Option Explicit
  2. Dim NextTime As Date

  3. Sub RecordPrice()
  4. Calculate
  5. End Sub

  6. Sub mySchedule()
  7. Const StopTime As Date = "14:30:00"

  8. NextTime = Now + TimeValue("00:00:02")
  9. If TimeValue(NextTime) <= StopTime Then
  10.    Application.OnTime EarliestTime:=TimeValue(NextTime), Procedure:="mySchedule"
  11. End If
  12. Call RecordPrice
  13. End Sub

  14. Sub Macro1()
  15. Sheet4.Range("g1:g2").Clear
  16. Sheet4.Range("a3:f3").Clear
  17. Sheet4.Range("a5:i90000").Clear

  18. End Sub
複製代碼
原則上只用到這幾個,在請G大跟我說上面那兩行加在哪裡可以讓畫面不再閃爍

TOP

回復 29# GBKEE
G大,情況就大概像影片中的樣子,會一直閃個不停
http://youtu.be/HkWukKMe2_A

TOP

回復 32# 藍天麗池
試試看
  1. Sub RecordPrice()
  2.     Application.ScreenUpdating = False
  3.     Calculate
  4.     Application.ScreenUpdating = True
  5. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 33# GBKEE


    感謝G大

TOP

回復 33# GBKEE

G大不好意思又來請教你了
    http://forum.twbts.com/viewthread.php?tid=13250&extra=

TOP

        靜思自在 : 【做人的開始】每一天都是故人的開始,每一個時刻都是自己的警惕。
返回列表 上一主題