TimeValue(Now) = TimeValue 無法發事件??
- 帖子
- 764
- 主題
- 254
- 精華
- 0
- 積分
- 1031
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2025-6-7
|
TimeValue(Now) = TimeValue 無法發事件??
工作表的calculate事件
TEST.rar (4.5 KB)
Private Sub Worksheet_Calculate()
If TimeValue(Now) = TimeValue("18:25:00 ") Then
[A2] = 1
End If
End Sub
我把時間改為目前時間(控制台的時間)加一分鐘, 等了一分鐘也沒反應?時間到了沒辦法觸發事件??? |
|
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
2#
發表於 2013-6-28 23:01
| 只看該作者
Sub Start_Timer()
Application.OnTime Now + TimeValue("00:01:00"), "Sonny"
End Sub
Sub Sonny()
Range("A2").Value = 1
End Sub |
|
ss
|
|
|
|
|
- 帖子
- 764
- 主題
- 254
- 精華
- 0
- 積分
- 1031
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2025-6-7
|
3#
發表於 2013-6-29 06:23
| 只看該作者
Sub Start_Timer()
Application.OnTime Now + TimeValue("00:01:00"), "Sonny"
End Sub
Sub Sonny ...
sunnyso 發表於 2013-6-28 23:01 
抱歉
測試過了, 一開檔還是沒辦法觸發,要執行Start_Timer(),才會觸發
觸發條件=>目前時間加1分鐘 等於執行Start_Timer後加1分鐘
1. 在Calculate 裡無法啟動Start_Timer ???
2. 我是要在固定的時間去做某事,所以"目前時間加1分鐘" ,不適合我用 |
|
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
4#
發表於 2013-6-29 09:21
| 只看該作者
本帖最後由 stillfish00 於 2013-6-29 09:24 編輯
回復 3# t8899
1#寫法的意思是當工作表的公式有重新計算時,才會去執行Worksheet_Calculate裡面的程式
他不是時時刻刻都檢查是否等於 TimeValue("18:25:00 "),檢查時的當下時間可能已經過了好幾秒,當然不會成立。
3#一開檔還是沒辦法觸發,要執行Start_Timer(),才會觸發
這個你可以在一般模組內定義- Sub auto_open()
- Start_Timer
- End Sub
複製代碼 或ThisWorkbook內- Private Sub Workbook_Open()
- Start_Timer
- End Sub
複製代碼 都能讓開檔時自動執行Start_Timer
我是要在固定的時間去做某事,所以"目前時間加1分鐘" ,不適合我用
這才是你想解答的問題
如果是要開啟工作表後,希望某個時刻到達時就去做某件事
其實答案就在前面,你去查看Application.OnTime說明的話..- Application.OnTime 方法
- 安排一個程序在將來的特定時間執行 (既可為某個日期的指定時間,也可為指定的時間之後)。
- 語法
- 運算式.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
- 運算式 代表 Application 物件的變數。
- 參數
- 名稱 必要/選用 資料類型 描述
- EarliestTime 必要 Variant 想要執行程序的時間。
- Procedure 必要 String 要執行的程序名稱。
- LatestTime 選用 Variant 可以開始執行程序的最晚時間。例如,假設 LatestTime 設為 EarliestTime + 30,當時間到了 EarliestTime 時,如果由於其他程序正在執行中而使 Microsoft Excel 不處於 [就緒]、[複製]、[剪下] 或[尋找] 模式,則 Microsoft Excel 會等待 30 秒以完成第一個程序。如果 30 秒內 Microsoft Excel 無法回到 [就緒] 模式,則不會執行此程序。如果省略此引數,Microsoft Excel 會一直等到可以執行該程序為止。
- Schedule 選用 Variant 若為 True,排程新的 OnTime 程序。若為 False,清除先前設定的程序。預設值為 True。
複製代碼 就可以知道這樣寫就好了- Sub auto_open()
- Application.OnTime TimeValue("18:25:00"), "Sonny" 'Sonny定義如2樓
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 764
- 主題
- 254
- 精華
- 0
- 積分
- 1031
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2025-6-7
|
5#
發表於 2013-6-29 10:18
| 只看該作者
本帖最後由 t8899 於 2013-6-29 10:29 編輯
1#寫法的意思是當工作表的公式有重新計算時,才會去執行Worksheet_Calculate裡面的程式
他不 ...
stillfish00 發表於 2013-6-29 09:21 
我懂了
因為我的工作表,有抓股票行情, 儲存格會一直變動
我在測試時,已經收盤了.............
所以 If TimeValue(Now) = TimeValue("18:25:00 ") Then
應該也是沒問題的!
我下周一在測試看看, 謝謝
另外請教一下
If Format(Now, "hh:mm:ss") = "14:54:00" Then
[R31] = 1
及 SHEET1的R31=1 ===>此段的語法??
End If |
|
|
|
|
|
|