- 締切済み
VBAでタイマー作れますか?
エクセルでhttp://www.excel-excel.com/tips/vba_82.htmlなタイマー見つけたんですが、 これを応用して、時計と連動した36分固定のタイマーつくれないでしょうか? 0:18~0:54 [今日はもう寝ます] 0:54~1:30 [ただ今睡眠中] 1:30~2:06 [ただ今睡眠中] 2:06~2:42 [ちょっと起きました] 2:42~3:18 [また寝ます] 3:18~3:54 [寝てます] 3:54~4:30 [寝てます] 4:30~5:06 [起きました] 5:06~5:42 [まだ早いのでまた寝ます] 5:42~6:18 [睡眠中] 6:18~6:54 [そろそろ起きる時間です] 6:54~7:30 [テスト1] 7:30~8:06 [テスト2] 8:06~8:42 [テスト3] 8:42~9:18 [テスト4] 9:18~9:54 [テスト5] 9:54~10:30 [テスト6] 10:30~11:06 [テスト7] 11:06~11:42 [テスト8] 11:42~12:18 [テスト9] 12:18~12:54 [テスト10] 12:54~13:30 [テスト11] 13:30~14:06 [テスト12] 14:06~14:42 [テスト13] 14:42~15:18 [テスト14] 15:18~15:54 [テスト15] 15:54~16:30 [テスト16] 16:30~17:06 [テスト17] 17:06~17:42 [テスト18] 17:42~18:18 [テスト19] 18:18~18:54 [テスト20] 18:54~19:30 [テスト21] 19:30~20:06 [テスト22] 20:06~20:42 [テスト23] 20:42~21:18 [テスト24] 21:18~21:54 [テスト25] 21:54~22:30 [テスト26] 22:30~23:06 [テスト27] 23:06~23:42 [テスト28] 23:42~0:18 [テスト29] この時間の間隔で36分のタイマーを作ってほしいのですが可能でしょうか? 0:18、0:54、1:30などの時間で36分のタイマーが勝手にスタートしているようにしたいです。 もちろん時計と連動したものがほしいので、スタートボタンとかはいりません。 ファイルを開いたときに今の時間を判断しタイマーが動いてくれるとうれしいです。 あと、それぞれの時間帯に「コメント」を入れられるようにしたいです。 可能でしょうか?よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tsubuyuki
- ベストアンサー率45% (699/1545)
Sub Sample() Do Range("D2") = Time() Range("E2") = Application.Ceiling(Time(), 0.025) + 0.0125 - Time() Loop End Sub あとはVLOOKUP関数でなんとでもできます。 少しくらい、自分で考えましょう。
- tsubuyuki
- ベストアンサー率45% (699/1545)
なるほど、36分単位ですね。 http://qanda.rakuten.ne.jp/qa8146542.html こちらの「touch_ken」さんの質問が参考になると思います。 リンク先の#1さんの回答を採用するのであれば、 ワークシート上に A列 B列 タイマー時間 予定 0:18 [今日はもう寝ます] 0:54 [ただ今睡眠中] ・ ・ と「予定表」を作っておき、VLOOKUP関数を使えば出来ます。 例えば、C1セルで現在時刻を表示させるようにマクロを書き換え、 D1セルに式「=VLOOKUP(C1,予定表の範囲,2,TRUE)」としてやればOKです。 リンク先の#2の回答を若干手直ししてやっても 「36分単位」での自動処理は出来ます。 要するに、特定の時間に特定の文言を出すマクロを作って、 24時間延々とループさせておけば良いだけですから難しくはありません。 以上、参考までに。 追記) おそらく、リンク先の質問者さんと同様に 「理解できない回答・不都合な回答はスルー」なさるのだとは思いますが、一つだけ。 > 36分のタイマーを作ってほしいのですが なかなか堂々と書いていらっしゃいますが、ここは「QAサイト」です。 「プログラム作成依頼」を受け付ける場所ではありませんので、お控えください。
補足
おはようございます。 さっそくやってみたのですが、タイマーの機能がないように思えます。 一応タイマーなので36分~0(36)分までのカウントダウンするタイマーがほしかったのですが。
- kybo
- ベストアンサー率53% (349/647)
OnTimeを使えば出来ます。 以下の様な感じです。 適宜訂正して下さい 'ThisWorkbookに記述 Private Sub Workbook_Open() Call macro End Sub ’標準モジュールに記述 Dim J As Integer Sub macro() Range("A1").Value = TimeValue("00:18:00") + TimeSerial(0, J * 36, 0) Application.OnTime TimeValue("00:18:00") + TimeSerial(0, J * 36, 0), "jikan" J = J + 1 End Sub Sub jikan() Dim A As Variant A = Array("[今日はもう寝ます]", "[ただ今睡眠中]", "[ただ今睡眠中]", "[ちょっと起きました]", "[また寝ます]", "[寝てます]" _ , "[寝てます]", "[起きました]", "[まだ早いのでまた寝ます]", "[睡眠中]", "[そろそろ起きる時間です]" _ , "[テスト1]", "[テスト2]", "[テスト3]", "[テスト4]", "[テスト5]", "[テスト6]", "[テスト7]" _ , "[テスト8]", "[テスト9]", "[テスト10]", "[テスト11]", "[テスト12]", "[テスト13]", "[テスト14]" _ , "[テスト15]", "[テスト16]", "[テスト17]", "[テスト18]", "[テスト19]", "[テスト20]", "[テスト21]" _ , "[テスト22]", "[テスト23]", "[テスト24]", "[テスト25]", "[テスト26]", "[テスト27]", "[テスト28]", "[テスト29]") Range("B1").Value = A(J) Call macro End Sub
補足
おはようございます。 B1セルにはコメントがでているのですが。 A1には12:54:00AMと表示してますが止まったままです。 A1には36分から0(36)分までのカウントダウンしてればいいのですが かのうでしょうか?
- trajaa
- ベストアンサー率22% (2662/11921)
エクセルVBAには、タイマーコントロール無いんでなかったか? なら無理 いや何か専用のクラスでも使えば出来そうな気もするが 少なくとも標準では
補足
実行すると応答なしになって固まってしまいますね。 無理そうなのであきらめます。 ありがとうございました。