- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
49#
發表於 2014-2-5 16:56
| 只看該作者
本帖最後由 GBKEE 於 2014-2-5 16:58 編輯
回復 48# j1221
因程式的 FIND 的時間 不一定落在00,05,10,15....分鐘的時間上
導致工作表A欄FIND不到而造成錯誤- Dim xTime As String '宣告為字串型態 僅ThisWorkbook模組的程序可用
- Private Sub Workbook_Open()
- Sheets("TXF1").[B7:P19000] = ""
- Sheets("MXF1").[B7:P19000] = ""
- Sheets("EXF").[B7:P19000] = ""
- Sheets("FXF").[B7:P19000] = ""
- Sheets("TWT").[B7:P19000] = ""
- Sheets("TWO").[B7:P19000] = ""
- If Time >= TimeValue("08:45:00") And Time <= TimeValue("13:45:00") Then
- '*** 營業時間內 不一定在 00,05,10,15....的分鐘上 ******
- xTime = Minute(Time) - Minute(Time) Mod 5 '落在上一個 5分鐘 ,Mod:兩數相除的餘數
- xTime = Format(TimeSerial(Hour(Time), xTime, 0), "h:mm:ss")
- change
- Else
- xTime = "08:45:00"
- Application.OnTime TimeValue(xTime), "ThisWorkbook.change"
- End If
- End Sub
- Private Sub change()
- Dim TimeRange As Range, Rng As Range, R As Range
- ' *** Time 時間點不一定落在5分鐘上 ********
- 'xTime為落在 00,05,10,15....的分鐘上的時間,可確定一定找得到
- Set TimeRange = Sheets("TXF1").[A:A].Find(xTime, LookIn:=xlValues) '改為 搜尋內容
- Set Rng = TimeRange.Offset(, 1).Resize(, 11)
- Rng.Value = Sheets("Main").Range("C9:M9").Value
-
- Set TimeRange = Sheets("MXF1").[A:A].Find(xTime) '接下的Find會依據上一次Find的選項來搜尋
- Set Rng = TimeRange.Offset(, 1).Resize(, 11)
- Rng.Value = Sheets("Main").Range("C11:M11").Value
-
- Set TimeRange = Sheets("EXF").[A:A].Find(xTime)
- Set Rng = TimeRange.Offset(, 1).Resize(, 11)
- Rng.Value = Sheets("Main").Range("C12:M12").Value
-
- Set TimeRange = Sheets("FXF").[A:A].Find(xTime)
- Set Rng = TimeRange.Offset(, 1).Resize(, 11)
- Rng.Value = Sheets("Main").Range("C13:M13").Value
-
- Set TimeRange = Sheets("TWT").[A:A].Find(xTime)
- Set Rng = TimeRange.Offset(, 1).Resize(, 17)
- Rng.Value = Sheets("Main").Range("C2:U2").Value
-
- Set TimeRange = Sheets("TWO").[A:A].Find(xTime)
- Set Rng = TimeRange.Offset(, 1).Resize(, 20)
- Rng.Value = Sheets("Main").Range("C3:U3").Value
-
- If Time > TimeValue("13:45:00") Then Exit Sub
-
- xTime = Minute(Time) + 5 - Minute(Time) Mod 5 '落在下一個5分鐘
- xTime = Format(TimeSerial(Hour(Time), xTime, 0), "h:mm:ss") '落在 00,05,10,15....的分鐘的時間上
- ' Now + TimeValue("00:05:00") ->不一定是落在 00,05,10,15....的分鐘上
- Application.OnTime TimeValue(xTime), "ThisWorkbook.change" '確實在下一個5分鐘點上執行
- End Sub
複製代碼 |
|