マネックス証券に無料資料請求をして資産運用の第一歩を踏み出す
簡単なアンケートに答えるだけでおこづかい稼ぎができるYahoo!リサーチモニターライトに登録する
◆通信料金を払いすぎていませんか?価格.comブロードバンドでアクセスプロバイダ比較
世界標準のブログソフトウェア「Movable Type」発売中!!

2006年05月04日

Excelで時計をつくる

昨日の時間計算は、なんともお粗末な結果となりました(汗

あんなに簡単にできるとは・・・(涙

で、続きとしてExcelで時計をつくってみようと考えまして、やってみたらこっちのほうがもっとたいへんでした。

といのうのが、Excelには標準仕様でタイマーコントロールがない!

時間ごとにイベントを生じるタイマーみたいなものがありまして、イベントを拾ってコードを実行するのが普通。

というか、Excelにそんな機能はいらないってことなんでしょうね(笑

たしかに、Excelでそんなことをやろうなんて、普通は考えません。

でも、やりたいんだからしょうがない!!

同じ徹は二度と踏まないってことで、いろいろ調べてみました。

しかし、これという決定的な方法はないようです。

もちろんAPI使うという手もありますが、これは危険なのでやらない(笑

めんどくさいってこともあります。

そこで注目したのが、Application.Ontimeです。

たぶん、Ontimeは予定日時に定期的な処理をさせるための機能ではないかと思うのですが、これを利用して時間を表示させる、と。

時計と言っても、前回の続きのため若干ややこしい時刻表示をさせるので、取得時刻をそのまま表示させるわけではありませんが・・・

とりあえず、やってみました。

フォーム上に計算済み時刻を表示させていたのですが、どうも挙動がおかしい。

なんでかな〜と思っていたら、フォームを閉じてもOnTimeのScheduleをFalseにしていないため、Excelは延々と予定された動作を繰り返していたのです(笑

ん〜

フォームのBeforeClose()でいろいろやってみたものの、うまく停止させることができない。

OnTimeでは、実行されるように設定されたマクロを特定するのに、開始予定時刻とマクロ名を利用している、と説明されています。

しょうがないので作業用のシート上にいったん開始予定時刻を書き込んでおいて、それを停止コードで再利用する、という手段でなんとかうまくいきました。

もっとうまい方法がありそうな気もしますが・・・

とりあえず30秒ごとに時刻表示を変更していくように設定している(毎秒実行するのはちょっとうざったい)ので最大で29秒のズレが発生すると思われますが、ま、許容範囲ってことで(笑

仕事でやってたらこんなこと言えないですね。

そのうちにまた別の方法を考えてみることにします。
posted by xiu at 16:19| Comment(0) | TrackBack(0) | VB/VBA | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。