Excel のタイマー処理は Application.OnTime

http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=Application%2eOnTime
は使い物になるのか?ただいま検証中。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbaxl11/html/xlmthOnTime1.asp
を見ても、ちんぷんかんぷん。Excel の挙動を見ながら解読すると、つぎのような感じだ。

  • タイマーは多重に設定できる。
  • OnTime の引数に、起動したい Sub のプロシージャー名を文字列リテラルで指定する。
  • 起動できるのは、標準モジュールのプロシージャーのみか。クラスはできなさそう。ワークシートにあるプロシージャーはできるのかも。
  • Sub の引数は指定できなさそう。
  • 取消は、引数 Schedule を False に設定することでおこなうらしい。
  • タイマーIDやタイマーハンドルのようなものは、外部仕様としてはない(内部仕様では持っているのかもしれないが)。
  • 取消で必要になるが、設定したタイマーを特定するのに使われるのは、タイマーの起動時刻と起動するプロシージャー名のセット(AND 条件)のようだ。プロシージャー名は、プロシージャーが同じかどうかで判断しているようだ。すなわち、大文字小文字の違いは無視する。時刻は、おそらく Date 型の精度なのではないか?
  • 引数の LatestTime というのが良く分からない。指定すると、MSDNに書いてある「30 秒以内に Excel が待機モードにならないとき、指定したプロシージャは実行されません。」のようなことになるのか?「実行されません」とはどういうことだ?エラーが発生せずに、ただ単に無視されるだけなのか?だったらやだな。