返回列表 上一主題 發帖

[發問] 如何判斷 Application.OnTime 是否在執行??

[發問] 如何判斷 Application.OnTime 是否在執行??

本帖最後由 t8899 於 2014-10-17 14:54 編輯

如何判斷 Application.OnTime 是否在執行中??
語法為何?
IF ................THEN ........
--------------------------------------------
Sub timestock()
my = #12:01:00 AM#
The_Time = Time + my
Application.OnTime The_Time, "timestock"

END SUB

本帖最後由 t8899 於 2014-10-17 18:57 編輯
回復  t8899

是這個意思嗎?
讓你知道程式有沒有在跑
蝕光迴狼 發表於 2014-10-17 16:46

您的方式應該會佔資源.....??
我是要知道timestock 是否正在跑 ?用 if ....then 的語句 .........
不要用類似  if [a1]=1 then true
Sub timestock()
[a1]=1
my = #12:01:00 AM#
The_Time = Time + my
Application.OnTime The_Time, "timestock"
END SUB

sub timestop()
Application.OnTime The_Time, "timestock", Schedule:=False
[a1]=2
end sub

是不是應該用變數給它???變數又要怎麼設??

TOP

回復  t8899


   
是這樣嗎?
GBKEE 發表於 2014-10-17 19:24


if ..timestock 正在跑  then............  語法????

TOP

本帖最後由 t8899 於 2014-10-17 20:06 編輯
想要攔截就在 module 放一個
Public Sub AAA( 正在跑 )
If  正在跑 Then
Else
End if
End Sub

...
bobomi 發表於 2014-10-17 19:47

謝謝!
有時執行
Application.OnTime The_Time, "timestock", Schedule:=False
timestock 無法停止退出 ..也不知有無退出成功...又重覆執行timestock
變成兩個timestock在跑...
您的方法似乎無法達到我的要求..........??
一定要知道timestock 有無在執行中,才可達到我的要求

TOP

本帖最後由 t8899 於 2014-10-17 20:56 編輯
Sub timestock()
Call  AAA ( True ) ' 放在  Application.OnTime The_Time, "timestock" 之前

my = #1 ...
bobomi 發表於 2014-10-17 20:11
Book1.rar (5.72 KB)
applicaiton.ontime  麻煩真的很大
欲停止 ,執行階段錯誤1004
如何強迫停止???關掉excel ??

TOP

本帖最後由 t8899 於 2014-10-18 06:22 編輯
回復  t8899
1. 是否可以說明這個程式的用意為何?
 如此才能真正幫你達到,你想要追求的效果。
..
蝕光迴狼 發表於 2014-10-17 22:58
1. 是否可以說明這個程式的用意為何?
 如此才能真正幫你達到,你想要追求的效果。

1分鐘執行1次zzzzz程序
有時莫名其妙??秒,會執行1次,這種情形出現後,按停止鈕還在執行,只能關掉excel
Sub IE345678()
If Not Ie Is Nothing Then
MsgBoxTest 0, "IE345678 已執行", "提示訊息", vbSystemModal, 0, 2000
Exit Sub
End If
    Set Ie = CreateObject("InternetExplorer.Application")
    Ie.Navigate "http://newmis.twse.com.tw/stock/group.jsp?ex=tse&ind=TIDX#STATISTICS"
    Do While Ie.Busy Or Ie.ReadyState <> 4: DoEvents: Loop
    timestock
End Sub
-------------------------------------------------
Sub timestock()
   my = #12:01:00 AM#
The_Time = Time + my
Application.OnTime The_Time, "timestock"
    '-------------------------------------------------------
zzzzz ' 主要程序
'------------------------------------------------------------------------------------------
        If Not Ie Is Nothing Then
        Application.OnTime The_Time, "timestock", Schedule:=False
        Ie.Quit
        Set Ie = Nothing
                 End If
Exit Sub




3. 建議你可以設立2個按鈕【程式開始啟動】與【程式停止】會比較好。
 因為有關於時間,程式的寫法都是要即時更近的,就會發生你這種”程式停不下來”的窘境。

我本來就是做兩個按扭,但我也有把這兩個程序擺在 Private Sub Worksheet_Calculate()  裡
Private Sub Worksheet_Calculate()
  If TimeValue(Now) = TimeValue("13:24:51") Then
IE345678
End If

If TimeValue(Now) = TimeValue("13:30:30") Then
ASTOP
End If
end sub
---------------------------------------------------
Sub ASTOP()
        If Not Ie Is Nothing Then
        On Error Resume Next
           Ie.Quit
        Application.OnTime The_Time, "timestock", Schedule:=False
           MsgBoxTest 0, "已停止 ", "提示訊息", vbSystemModal, 0, 350
          End If
   
End Sub

TOP

Sub IE345678()

If Not Ie Is Nothing Then
   MsgBox "IE345678 已執行"
   Exit Sub
End If
  ...
bobomi 發表於 2014-10-18 08:23

要測試一段時間,希望能解決問題,謝謝指導 .

TOP

要求 99% 準時就這樣

Sub IE345678()

If Not IE Is Nothing Then
   Application.OnTime The_Time + ...
bobomi 發表於 2014-10-18 08:31


要測試一段時間,希望能解決問題,謝謝指導 .

TOP

回復  t8899
試試看
GBKEE 發表於 2014-10-18 07:10


my = #12:01:00 AM#
是不是這問題 ??上午跑沒問題,下午循還2-3次會跳出??

TOP

回復  t8899
   
鐵定不是,要附檔看看或是完整程式碼
GBKEE 發表於 2014-10-21 15:28

附檔 Book2.zip (9.55 KB)

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題