| 
    
     |  | ▼かるかる さん: ▼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
 
 
 |  |