Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


62703 / 76732 ←次へ | 前へ→

【18634】Re:動作が重すぎて
発言  名無し  - 04/10/2(土) 12:15 -

引用なし
パスワード
   ▼かるかる さん:
▼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

1 hits

【18619】動作が重すぎて かるかる 04/10/1(金) 16:28 質問
【18621】Re:動作が重すぎて ichinose 04/10/1(金) 18:20 発言
【18622】Re:動作が重すぎて かるかる 04/10/1(金) 18:40 発言
【18626】Re:動作が重すぎて 名無し 04/10/2(土) 0:52 発言
【18632】Re:動作が重すぎて ichinose 04/10/2(土) 2:35 発言
【18634】Re:動作が重すぎて 名無し 04/10/2(土) 12:15 発言
【18646】Re:動作が重すぎて bykin 04/10/3(日) 0:22 回答

62703 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free