| 
    
     |  | ▼名無し さん: ▼かるかる さん:
 こんばんは。
 私も確認してみました(実は、Ontimeを使用すれば、CPUの使用率のほうはOK
 かと思っていたので)
 
 まず、かるかるさんが投稿されたコードを調べました。
 おっしゃられている通り、100%使用率で進行しています。
 
 
 ONTimeメソッドを使用して同じ動作になるように作ってみました。
 
 まず、標準モジュール(Module1)にスケジューリング関連のプロシジャー
 '===============================================================
 Private exetm As Variant '次の実行時刻
 Private repcnt As Long '繰り返し回数
 Private c_cnt As Long '現在の回数
 Private reptm As Variant '実行間隔時間
 Private prcnm As String '実行プロシジャー名
 '========================================================================
 Sub mc_schedule(ByVal on_off As Boolean, Optional ByVal rep_cnt As Long = 0, _
 Optional ByVal rep_time As Variant = 0, Optional ByVal proc_name As String = "")
 'マクロ実行のスケジュールの設定を行う
 'input : on_off --- true スケジュール設定 false---スケジュール解除
 '    rep_cnt  実行を繰り返す回数
 '    rep_time  実行間隔時間
 '    proc_name 実行するプロシジャー名
 On Error Resume Next
 If on_off = True Then
 If rep_cnt > 0 Then
 reptm = rep_time
 repcnt = rep_cnt
 c_cnt = 0
 prcnm = proc_name
 End If
 exetm = Now() + reptm
 End If
 Application.OnTime EarliestTime:=exetm, Procedure:="mc_exec", Schedule:=on_off
 On Error GoTo 0
 End Sub
 '=====================================================================
 Sub mc_exec()
 'スケジュール設定されたプロシジャーを実行する
 Dim wk As Variant
 wk = Application.Run(prcnm)
 c_cnt = c_cnt + 1
 If c_cnt < repcnt Then
 Call mc_schedule(True)
 End If
 End Sub
 
 '次に別の標準モジュール(Module2)にかるかるさんの投稿されたコードに沿った
 'コード
 '======================================================================
 Dim i As Long
 '======================================================================
 Sub main()
 i = 1
 test
 '設定
 Call mc_schedule(True, 49999, TimeValue("00:00:30"), "test")
 '              ↑回数   ↑間隔時間     ↑実行するプロシジャー
 end sub
 '================================================================
 Sub test()
 '実際にontimeメソッドで実行するプロシジャー
 ns = i
 Worksheets("Sheet1").Cells(i, 2).Activate
 Worksheets("Sheet1").Cells(i, 1).Value = ns
 i = i + 1
 End Sub
 '=================================================================
 Sub subproc()
 '解除 途中終了のときのため
 Call mc_schedule(False)
 End Sub
 
 
 このコードのmainを実行してみて下さい。
 
 これで、調べた結果、10%前後で推移している程度なんです。
 
 時間誤差については、確認してみて下さい。
 
 
 |  |