一定時間だけ実行する
開始から10分だけ実行したい場合など
一定時間だけ実行したいとき、
Do Loop ステートメントや
IfステートメントとGotoステートメントの組み合わせを使います。
Do Loopを使うにしてもIfとGotoを使うにしても
開始直後に終了時刻を決定します。
下のコードでは変数EndTimeが終了時刻で、
TimeValue関数で実行する時間の長さを指定します。
そして1ループ、コードを実行したあとで
(Do Loop While は実行する前)
現在の時間と終了時刻を比較します。
現在の時間が終了時刻よりも小さいなら継続、
現在の時間が終了時刻より大きいなら終了します。
macro111009bとmacro111009cは最低でも
1回は処理を実行します。
macro111009aは、仮に終了時刻を
実行開始から0秒後にすると
一回も実行しないで終了します。
これは、繰り返したい処理のコードの前で時刻を評価しているためです。
下のコードは
実行している間だけイミディエイトに
"実行中"という文字列を出力します。
3つの方法を挙げます。
コードはこちら
Sub macro111009a() Dim EndTime As Date '終了時刻 Sub macro111009b() Dim EndTime As Date '終了時刻 Sub macro111009c() Dim EndTime As Date '終了時刻 '一定時間実行したい処理開始 |
macro111009aとmacro111009bは比較的行数の少ないコードに
macro111009cは行の多いコードに使っています。
長い入れ子は好みません。
ただGotoメソッドは複雑になるので
できるだけ使わない方がよいと
VBAヘルプに書いてあるのでそれも参考にしてください。
| 固定リンク
この記事へのコメントは終了しました。

コメント