• 締切済み

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分のタイマーが勝手にスタートしているようにしたいです。 もちろん時計と連動したものがほしいので、スタートボタンとかはいりません。 ファイルを開いたときに今の時間を判断しタイマーが動いてくれるとうれしいです。 あと、それぞれの時間帯に「コメント」を入れられるようにしたいです。 可能でしょうか?よろしくお願いします。

みんなの回答

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

Sub Sample() Do Range("D2") = Time() Range("E2") = Application.Ceiling(Time(), 0.025) + 0.0125 - Time() Loop End Sub あとはVLOOKUP関数でなんとでもできます。 少しくらい、自分で考えましょう。

kenken008
質問者

補足

実行すると応答なしになって固まってしまいますね。 無理そうなのであきらめます。 ありがとうございました。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

なるほど、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サイト」です。 「プログラム作成依頼」を受け付ける場所ではありませんので、お控えください。

kenken008
質問者

補足

おはようございます。 さっそくやってみたのですが、タイマーの機能がないように思えます。 一応タイマーなので36分~0(36)分までのカウントダウンするタイマーがほしかったのですが。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

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

kenken008
質問者

補足

おはようございます。 B1セルにはコメントがでているのですが。 A1には12:54:00AMと表示してますが止まったままです。 A1には36分から0(36)分までのカウントダウンしてればいいのですが かのうでしょうか?

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

エクセルVBAには、タイマーコントロール無いんでなかったか? なら無理 いや何か専用のクラスでも使えば出来そうな気もするが 少なくとも標準では

関連するQ&A

  • Excel-VBAでタイマー処理

    お世話になります。 Excel-VBAでユーザフォームを操作したいのですが、VBの場合ツールボックスにタイマーコントロールがありますが、Excel-VBAの場合ツールボックスにタイマーコントロールがありません。 タイマー処理はどうしたら良いのでしょうか?

  • エクセルVBAでタイマーコントロールは使えますか

    エクセルVBAでタイマーコントロールは使えますか。 エクセルVBAで、ある時刻になったらマクロを実行させたいと思っています。 無限ループの中にTIME関数で時刻を呼び出し、それをIF文で判定して、 一定時刻にマクロを実行させるものは作りましたが、CPU負荷が高く、24時間 連続で動作させることに不安を感じています。 この他に、VBのタイマーコントロールのような機能を持つオブジェクトや 便利機能等があったら教えていただけませんか。 (一応、VBで時刻管理をするプログラムを作ってそこからエクセルVBAを呼 び出す方法やタスクスケジューラでエクセルVBAを呼び出す方法、ATコマンド 等も考えていますが、可能ならエクセルVBAで閉じて処理をしたい)。 尚、私はWindowsMe+エクセル2000でVBAを作成しています。 実際にVBAを動かすのは、WinsowNT4.0サーバー+エクセル2000を予定してい ます。

  • 【VBA】EXCELブックを開かずにシート名を取得したい

    VBAに関する質問です。 EXCELブックを開かずに、シート名を取得する方法を教えてください。 http://officetanaka.net/excel/vba/tips/tips29.htm ↑を見たのですが、具体的にどのようにしたらよいのかわかりません。 よろしくお願いします。

  • タイマー残り時間をExcel Vbaから利用したい

    情報処理検定(表計算)用のタイマー付き模擬試験の教材を作りたいと考えています。 大まかなイメージは次のようになります。 生徒がタイマー(自作する)で制限時間を設定し、スタートボタンを押すと作業を開始することができる。制限時間が過ぎるとメッセージを出し、作業は続けることができなくなる。 タイマーの残り時間をExcelのVbaから参照するにはどのような方法があるのか、どなたか教えていただけませんでしょうか。 これに関連しそうなことで、今までに次のことやりました。 (1)Vbaでタイマーを作りました。 時間を設定し、スタートボタンを押すと、残り時間を1秒単位で更新する。残り時間が0になるとメッセージを表示して終了する。   授業では全く使っていません。タイマーが必要な時は他のフリーのソフトを使っています。 (2)Vbaで制限時間付き英単語入力教材を作りました。  生徒が制限時間を設定し、スタートボタンを押すと作業を開始でき、英単語が表示され、同じ単語を入力セルに入力、確定すると次の英単語を表示する。以下残り時間が0になるまで作業する。入力したタイミングで残り時間を参照し、0以下になっていれば作業を終了させて、入力数と正解数を記録する。 これは授業で使っています。特に問題はないのですが、残り時間を刻々と表示するタイマーではないので緊迫感に欠けます。 (2)の中で(1)を実現しようと努力はしたのですが、うまくできませんでした。 (3)VisualBasicでタイマーを作りました。 「日経ソフトウエア」2015年8月号の記載のコードを入力しただけですが。 現在は次のようなことができれば、うまくいくのではないかと思い、その方法を探しています。 「自作タイマーとExcelを起動する。タイマーはあるタイミングで共通領域?(ファイル、メモリー、変数?)に残り時間を書き込む。Excel Vbaからあるタイミングで共通領域の値を参照する。」  全く手探り状態で、つぎのことを調べました。 (4)MSDNで「.NET Framework でのパイプ操作」 「方法: ローカルのプロセス間通信で匿名パイプを使用する」 「方法: ネットワークのプロセス間通信で名前付きパイプを使用する」 に記載されたコードをコピーし、働きを確認できたのですが、それをどう利用したらいいのか今のところよく分かりません。(言語はC#、環境はVisual Studio 2015 Community、OSはWindows 10) 基本的な知識が不足していて、どこから手をつけたらいいのか全く分からない状況です。 ともかく今は、プロセス間通信について調べています。またC#について勉強しています。「独習 C# 第3版」第7章まできました。サンプルコードを入力して確認しているだけですが。  よろしくお願いします。

  • excel VBA タイマー表示について

    お世話になります。 excelで計算問題のプログラムを組んでいます。 計算時間を表示しながら、問題を解くようにしたいと考えています。 タイマー表示を下記で行っていますが、セルに文字を入力するとタイマーが止まってしまいます。タイマーを動作させながら、文字入力を行うことは、Excelでは無理でしょうか? キー入力中、タイマー停止であれば、達成済みです。 動作は次のようにしています。 1)問題スタートで、下記タイマーを起動 2)答えをキー入力しEnterキーで答え合わせ 3)指定問題数終了で、タイマー停止 4)正解率、トータル時間を表示 Do Until blnStop = True Cells(3, 10) = Int((Timer - dblTimer) * 100) / 100 DoEvents Loop

  • DSlite用 ゲームタイマーについて

    DS lite用 ヘルスコントローラー ゲームタイマー についてお尋ねします。 どういう商品なのかは調べてわかったのですが、 以下の事が詳しくわかりません。 ご存知の方 教えてください! タイマーをかけて、1時間が経過したら強制シャットダウンの設定をしたいのですが・・ 例えば・・タイマーをスタートさせて、30分経った所で一度ゲームの電源を切ります。 何時間後かにゲームを再開させた場合、タイマーもそれに連動して、 ゲームをストップさせたらタイマーも一時停止、再開させたらタイマーも再開・・となるのでしょうか?

  • エクセルVBAで別ファイルのデータを取得しに行ってます。

    エクセルVBAで別ファイルのデータを取得しに行ってます。 http://www.officetanaka.net/excel/vba/tips/tips28.htm の二つ目に書かれたコードを参考に作ったんですが、取得セル範囲を何も入力されてない所まで広げると何も入力されてない所は『0』と取得、表示されてしまいます。 取得した時に『0』で表示するのを避ける方法はありますか?

  • 現在時刻・経過時間・残り時間を表示するタイマー

    現在時刻・経過時間・設定した時間までの残り時間の3つが同時に表示できるタイマーを探しています。 別々のものは沢山みつかりましたが、カウントアップ/カウントダウンタイマーを同時に表示できて、アップとダウンを連動してスタートさせられるものが見つかりませんでした。 時計は一緒のがなければ別でも良いのですが、カウントアップとダウンは同時に表示させたいです。 目的は試験や会議で時間を分かりやすく表示することです。 なので、タイマーの最大時間は3時間くらいまで。 全画面表示かそれに近い大きい文字で表示されることが望ましいです。 時:分:秒の表示が要ります。 前にマイクロソフトのテンプレートを応用して2時間のものをパワーポイントで作りましたが、 (アニメーションとスライドの自動切換えを使ったもの) 1分刻みだったので、最後の1分は秒までつけてほしいと言われ 手間がかかりすぎて対応を諦めました。 また、他の時間のものを作るものいちいち大変過ぎるので。 フリーソフトでどこかにありましたらご紹介ください。

  • VBAでテキストボックスにセルの内容を表示させたい

    EXCEL2016を使っています。 EXCEL中のグラフ内にテクストボックスを挿入し、セル値を連動させて表示したいのですが、VBAでうまくいきません。 マニュアルではできるのですが、なぜかVBAではマクロの記録もできませんでした。 VBAの表記を教えていただければ助かります。

  • EXCEL VBA マクロ値 のコピーについて

    マクロの初心者です。EXCEL VBA でタイマーマクロを作成し、結果の値を他ファイルの  EXCELシートに貼り付けようとしたところ、2012/9/30 13:38が2008/9/29      13:38となり、-0:08:53が-0.00616898148・・・・となり、真値がコピーできません。どなたか教えていただけないでしょうか?

専門家に質問してみよう