標題:
計時功能??
[打印本頁]
作者:
color790
時間:
2012-1-12 17:29
標題:
計時功能??
請問該怎麼以VBA用鍵盤做計時功能?? 謝謝~~
比如按ALT開始計時, 再按一次ALT就把該經過的時間記錄在儲存格上(可能會很多次), 所以不能覆蓋....
作者:
Hsieh
時間:
2012-1-12 18:16
回復
1#
color790
使用組合鍵Alt+z
Public x As Long, s As Double
Sub auto_open()
Application.OnKey "%z", "Ex"
End Sub
Sub Ex()
If x = 0 Then s = Timer
If x Mod 2 = 0 Then Cells(Rows.Count, 1).End(xlUp).Offset(1) = (Timer - s) / 86400: s = Timer
If x Mod 2 = 1 Then Cells(Rows.Count, 1).End(xlUp).Offset(1) = (Timer - s) / 86400: s = Timer
x = x + 1
End Sub
複製代碼
[attach]9202[/attach]
作者:
color790
時間:
2012-1-12 22:17
HI~版主, 問題比較多,不好意思, 可否麻煩版主幫我解釋一下....謝謝~^^
1. 為什麼要設 Public x As Long, s As Double, X是指什麼??
2. 為什麼要求X的餘數為零或為1 ??
3. 為什麼Timer - s 還要再除86400, 然後後面還有個 :是什麼意思
作者:
Hsieh
時間:
2012-1-12 23:18
回復
3#
color790
1. 為什麼要設 Public x As Long, s As Double, X是指什麼??
設計2個全域變數,s是記住此次執行時的時間,x是記錄此程序被執行幾次
2. 為什麼要求X的餘數為零或為1 ??
這個問題多謝你提醒,可以不須求得餘數,但是紀錄是否為第一次執行是必須的
改成
Sub Ex()
If x = 0 Then s = Timer
Cells(Rows.Count, 1).End(xlUp).Offset(1) = (Timer - s) / 86400: s = Timer
x = x + 1
End Sub
複製代碼
即可
3. 為什麼Timer - s 還要再除86400, 然後後面還有個 :是什麼意思
Timer是傳回從午夜零時起算至此的秒數,傳回的是Single,因為一天24小時轉成數值時為1,除以86400(一天為86400秒)是為了轉成秒
作者:
color790
時間:
2012-1-12 23:40
多謝版主的超快速回答....
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)