返回列表 上一主題 發帖

該如何取消巨集???

該如何取消巨集???

下面是現在時間+幾秒鐘後run ddd, 請問可以在已經run abc後, 中途停止run ddd嗎??
Sub abc()
Application.OnTime Now + 0.000100, "ddd"
End Sub

Sub ddd()
BEEP
End Sub
初學者color

回復 1# color790
可詳看VBA 說明:  OnTime方法
  1. Option Explicit
  2. Dim S As Date
  3. Sub abc()
  4.     S = Now + 0.0001   '時間
  5.     Application.OnTime S, "ddd"
  6. End Sub
  7. Sub ddd()
  8.     MsgBox "AAA"
  9.     Beep
  10. End Sub
  11. Sub OnTime_Cancel()  'S 時間之前 取消程式
  12.     Application.OnTime S, "ddd", , False
  13. End Sub
複製代碼

TOP

HI~版主
謝謝你的回答, 不好意思, 門外漢發問一下
為什麼一定要這一句 Option Explicit
另外,加上去都會有錯誤, 還是請你幫我看一下好了....

Public x As Long, S As Double

Sub start()
Application.OnKey "{RIGHT}", "go"
Application.OnKey "{LEFT}", "STOPS"
Range("r2:t30,d4:d8,g4:g8,k4:k8,n4:n8").ClearContents
End Sub
Sub go()
k = 2: m = 2: n = 2
Do Until Cells(k, 18) = ""
k = k + 1
Loop
Do Until Cells(m, 19) = ""
m = m + 1
Loop
Do Until Cells(n, 20) = ""
n = n + 1
Loop
If x = 0 Or x = 2 Then
Application.OnTime Now + 0.0001, "test3"
End If
If x = 0 Then S = Timer
Select Case x
Case 0
S = Timer
x = x + 1
Case 1
S = Timer
x = x + 1
Case 2
Cells(k, 18) = (Timer - S) / 86400: S = Timer
x = x + 1
Case 3
S = Timer
x = x + 1
Case 4
Cells(m, 19) = (Timer - S) / 86400: S = Timer
x = x + 1
Case 5
Cells(n, 20) = (Timer - S) / 86400: S = Timer
x = 0
ActiveWorkbook.Save
End Select
End Sub

Sub closefuntion()
Application.OnKey "{RIGHT}"
x = 0
End Sub

Sub test3()
BEEP
End Sub


Sub STOPS()
Application.OnTime Now + 0.0001, "test3", , False
End Sub
初學者color

TOP

回復 3# color790

在程式碼頂端加入Option Explicit   變數強制宣告
在接下來的變數都必須宣告其資料型態
只要沒有宣告就會出錯
加上這行有一個好處,就是如果變數拼錯很容易偵錯
再則,變數確實宣告型態,對程式執行速度有很大幫助
學海無涯_不恥下問

TOP

本帖最後由 color790 於 2012-2-9 23:48 編輯

謝謝版主的回答~
另外請問....
這個程式在按右鍵後假設開始計時20秒, 但在第12秒時按了左鍵停止了Sub STOPS()的執行
再按一次右鍵想要再8秒(20-12=8)後執行Sub STOPS()該怎麼改?(形容的不太好,希望版主看的懂)

我是改成這樣, 但按了右鍵再按左鍵,再按右鍵, 卻沒發出聲音..(重點在紅字區,z=0 應該就是指z="上午 12:00:00" 吧????)
Option Explicit
Dim p, w, z As Date
Public x As Long, S As Double

Sub start()
Application.OnKey "{RIGHT}", "go"
Application.OnKey "{LEFT}", "STOPS"
End Sub

Sub go()
If x = 0 Or x = 2 Then
If z <> "上午 12:00:00" Then
w = z - Now
Application.OnTime w, "test3"
Else
p = Now + 0.000112
Application.OnTime p, "test3"
End If
End If

z = 0
End Sub


Sub test3()
BEEP
End Sub


Sub STOPS()
Application.OnTime Now + 0.0001, "test3", , False
x = x - 1
z = p
End Sub
初學者color

TOP

有點深奧,只能幫的上範例一則

中斷程序.rar (7.15 KB)
Hung-Chi Lin/林宏吉
HUNGCHILIN/林宏吉的OFFICE專欄

TOP

有點深奧,只能幫的上範例一則
HUNGCHILIN 發表於 2012-2-9 23:35


怎麼裡面沒看到東西??
初學者color

TOP

回復 7# color790
執行 UserForm1 看看

TOP

本帖最後由 GBKEE 於 2012-2-10 16:40 編輯
回復  color790
執行 UserForm1 看看
GBKEE 發表於 2012-2-10 08:20

    ???? 還是沒有東西,是執行內的那個選項嗎?

初學者color

TOP

回復 9# color790
重新下載看看

TOP

        靜思自在 : 愛不是要求對方,而是要由自身的付出。
返回列表 上一主題