- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
26#
發表於 2013-4-26 06:14
| 只看該作者
回復 25# n8975067 - Option Explicit
- Dim timerEnabled As Boolean ' 判定開啟本工作表單的時段是否為開盤前啟動。
- Private Sub Workbook_Open()
- timerEnabled = False
-
- Call timerStart ' 程式一啟始,便去自動執行 timerStart
- End Sub
- Private Sub Workbook_BeforeClose(Cancel As Boolean)
- On Error Resume Next
- Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.RTimer", , False
-
- Me.Save
- End Sub
- Sub timerStart()
- If timerEnabled Then
- ' 第二次(含)以後均以設定之 "間隔時段" 來處理執行序的作業。
- Application.OnTime (Now + TimeValue("00:05:00")), "ThisWorkbook.updateFollow" ' 每隔五分鐘執行一次
- Else
- timerEnabled = True
-
- ' 將第一次啟動時間更改為設定 "開盤時間"前,如果開啟 Excel 時,已經過了設定 "開盤時間",則一進入系統即直接去執行紀錄作業。
- If (TimeValue(Now) <= TimeValue("08:45:00")) Then
- Application.OnTime (TimeValue("08:45:00")), "ThisWorkbook.updateFollow"
- Else
- ' 系統剛連上 DDE 至資料匯入Excel工作表單,須有一個緩衝時段,
- ' 這時如果馬上去抓取DDE資料,會有型態不符的錯誤訊息產生,並中斷執行序的作業。
- Application.OnTime (Now + TimeValue("00:00:05")), "ThisWorkbook.updateFollow"
- End If
- End If
- End Sub
- Sub updateFollow()
- Dim Rng As Range
-
- On Error Resume Next
- If (TimeValue(Now) < TimeValue("08:45:00") Or TimeValue(Now) > TimeValue("13:45:00")) Then Exit Sub
- With Sheet2
- ' Set Rng = .Range("A" & .Range("A" & .Rows.Count).End(xlUp).Row + 1)
- '
- ' Rng = Sheet1.[c2]
- ' Rng.Offset(, 1) = Sheet1.[d2]
- ' Rng.Offset(, 2) = Sheet1.[e2]
- ' Rng.Offset(, 3) = Sheet1.[f2]
- ' Rng.Offset(, 4) = Sheet1.[g2]
- ' Rng.Offset(, 5) = Sheet1.[h2]
- ' Rng.Offset(, 6) = Sheet1.[i2]
- ' Rng.Offset(, 7) = Sheet1.[j2]
- ' Rng.Offset(, 8) = Sheet1.[k2]
- ' Rng.Offset(, 9) = Sheet1.[l2]
- ' 上面之敘述表達與下列的敘述結果是一樣的,差異只在於使用語法之巧妙不同。
- Set Rng = .Range("A" & .Range("A" & .Rows.Count).End(xlUp).Row + 1).Resize(1, 10)
-
- Rng(1) = Sheet1.[c2]
- Rng(2) = Sheet1.[d2]
- Rng(3) = Sheet1.[e2]
- Rng(4) = Sheet1.[f2]
- Rng(5) = Sheet1.[g2]
- Rng(6) = Sheet1.[h2]
- Rng(7) = Sheet1.[i2]
- Rng(8) = Sheet1.[j2]
- Rng(9) = Sheet1.[k2]
- Rng(10) = Sheet1.[l2]
- End With
-
- If timerEnabled Then Call timerStart
- End Sub
複製代碼 我把你的 updateFollow() 與你的需求,全部整合在一起,
請將它全部覆蓋於 ThisWorkbook 程式碼編輯區塊內。
每日 08:45:00 以前開啟它 , 08:45:00時間一到,系統便會自動啟動執行,
13:45:00一超過時間,程式便會自動停止不再執行。
按鈕你可以保留,如果系統於突發狀況下停止運作,
你可以點選按鈕恢復系統運作。 |
|