Excel VBA質問箱 IV

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

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


5528 / 13645 ツリー ←次へ | 前へ→

【50249】タイマーの監視と作動時間管理 篤史 07/7/16(月) 10:14 質問[未読]
【50269】Re:タイマーの監視と作動時間管理 Jaka 07/7/17(火) 15:49 発言[未読]
【50278】Re:タイマーの監視と作動時間管理 篤史 07/7/18(水) 8:57 お礼[未読]
【50279】Re:タイマーの監視と作動時間管理 Jaka 07/7/18(水) 9:24 発言[未読]
【50299】Re:タイマーの監視と作動時間管理 篤史 07/7/18(水) 22:57 お礼[未読]

【50249】タイマーの監視と作動時間管理
質問  篤史  - 07/7/16(月) 10:14 -

引用なし
パスワード
   No.50235 の質問したVBA入門者の篤史です。

OnTime を使い、かろうじて指定時刻にプロシージャーを作動させることに成功したのですが、実際に使ってみると本当にタイマーが作動しているのか心配です。指定時刻になるまで、小心者の自分は心配でなりません。

ワークシートの片隅やユーザーフォームを使ってタイマーが作動していくことを確かめる術はないのでしょうか?

また、本当はこっちの方が重要なのですが、タイマーを複数作動させた時(作動させるプロシージャーは、それぞれ違うもの)それぞれの作動時間が重なると、そこで”応答なし”になってしまうのですが、(考えれば当たり前の様な気もしますが)これを回避するいい方法はないでしょうか?
作動時間はWebから抜き出してかなりの数(10〜30)あるし、PCの傍を離れるので、手動で時間をずらして修正することは困難です。

どなたか、よろしくお願いします。

【50269】Re:タイマーの監視と作動時間管理
発言  Jaka  - 07/7/17(火) 15:49 -

引用なし
パスワード
   やったことないんでこれ以上解りません。

Dim st1 As Variant, st2 As Variant, st3 As Variant

Sub aaa()
st1 = Now() + TimeValue("00:00:00")
st2 = Now() + TimeValue("00:00:05")
st3 = Now() + TimeValue("00:00:10")
Application.OnTime st1, "マクロ1"
Application.OnTime st2, "マクロ2"
Application.OnTime st3, "マクロ3"
End Sub
 
Sub マクロ1()
 On Error GoTo errPrc
 MsgBox "マクロ1"
 Exit Sub
errPrc:
 Err.Clear
 On Error GoTo 0
 MsgBox "エラー"
 Application.OnTime st2, "マクロ" & i, , False
 Application.OnTime st3, "マクロ3", , False
End Sub

Sub マクロ2()
 On Error GoTo errPrc
 MsgBox "マクロ2"
 Sheets(100).Select
 Exit Sub
errPrc:
 Err.Clear
 On Error GoTo 0
 MsgBox "エラー"
 Application.OnTime st3, "マクロ3", , False
End Sub

Sub マクロ3()
 On Error Resume Next
 MsgBox "マクロ3"
End Sub

【50278】Re:タイマーの監視と作動時間管理
お礼  篤史  - 07/7/18(水) 8:57 -

引用なし
パスワード
   Jaka さん、はじめましてこんにちは。

ご回答ありがとうございます。

まだまだVBAの知識がないので、最初は全く理解できませんでしたが、ほぼ解読するに至りました。要はエラーを出さないのでなく、エラーになったときにどう処理するかと言うことですよね?
今まで、エラーにしないことばかり考えていたので、エラーを上手く処理してプログラムを停止させないようにするなんて考えても見ませんでした。教えていただいたエラー処理参考にさせていただきます。

それと、マクロ1()の最後のほうの
> Application.OnTime st2, "マクロ" & i, , False
ココでなぜいきなり"i"がでてきたのかよく分からないのですが、マクロ名の数字を変数であらわす事が出来るのも驚きでした。これを使えばコードを簡略することも出来ますね。

最初考えていた方法とは少し方向が変わりましたが、ものすごく参考になりました。ありがとうございました。

【50279】Re:タイマーの監視と作動時間管理
発言  Jaka  - 07/7/18(水) 9:24 -

引用なし
パスワード
   >> Application.OnTime st2, "マクロ" & i, , False
>ココでなぜいきなり"i"がでてきたのかよく分からないのですが、
すみません。
最初、回そうと思った時の残骸です。
Application.OnTime st2, "マクロ2"
が正解です。
回すと起動時間を入れる変数を配列にしないとダメだと気づいたもので...。
ただ、変数だと変数の中身がいつ初期化されるか解らないので、セルとかに書き込んでおいた方が良いかも。

>マクロ名の数字を変数であらわす事が出来るのも驚きでした。これを使えばコードを簡略することも出来ますね。
最初はそうしようと思ったんですが、すでに起動し終わったものを取り消すとエラーになるので、判定をするのが面倒になったので手抜きで止めたんです。すみません。

【50299】Re:タイマーの監視と作動時間管理
お礼  篤史  - 07/7/18(水) 22:57 -

引用なし
パスワード
   ワザワザ補足説明ありがとうございます。
おかげで、ひとつ多くテクニックを取得できたので、良かったです。また質問するかもしれませんが、そのときもひとつ、よろしくお願いします。

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