|
▼かるかる さん:
▼ichinose さん:
こんにちは。ichinoseさんのコードを参考に私もコードを書いてみました。
あまり自信がないですけど。変数名を少し変更しています。
後学のために、おかしな点がありましたら指摘してください。
'=== 変数・定数 ===
Private StopFlag As Boolean '終了フラグ Trueで中断
Private Counter As Long 'カウンタ(元はI)
Private NextTime As Date '次回実行時間(元はTd)
Const CountMax As Long = 50000 '処理回数
Const AddTime As String = "00:00:30" '間隔
Const ProcName As String = "Sec30" 'OnTimeで実行するプロシージャ名
'=== 開始 ===
Sub Proc_Start()
If Counter > 0 Then Exit Sub '実行中は再実行させないで抜ける
StopFlag = False '終了フラグの初期化
Counter = 1 'カウンタの初期化
NextTime = Now() + TimeValue("00:00:02")
Application.OnTime NextTime, ProcName
End Sub
'=== 中断する時はこれを実行 ===
Sub Proc_Stop()
StopFlag = True
End Sub
'=== 処理部分 ===
Private Sub Sec30()
Dim NS As Long
NS = Counter 'このNSってなんでしょうか?
Worksheets("Sheet1").Cells(Counter, 2).Activate
Worksheets("Sheet1").Cells(Counter, 1).Value = NS '直接Counterじゃダメなんですか?
Counter = Counter + 1
'カウンタが処理回数を超えるか終了フラグがTrueなら終了
If Counter > CountMax Or StopFlag Then
Counter = 0
MsgBox "終了!"
Exit Sub
End If
NextTime = NextTime + TimeValue(AddTime) '前回実行時間に間隔時間を足す
Application.OnTime NextTime, ProcName 'このプロシージャを指定時間後に再実行
End Sub
|
|