• 締切済み

指定した時刻になるとセルに色がつくようにしたい

初心者です。エクセルのVBAで設定した時刻になったらセルに色がつくようにしたいです。 例えば、17:00時にA1セル、18:00にA2セルに色を自動でつくようにしたいと思っています。 OnTimeを使ったらよいと思っていろいろ試しましたが、設定した時刻になってもなにも起こりません。 標準モジュールに以下の内容を記述して、パソコンの時計を変更して確認しています。 できたらクリックしないでファイルオープンしてなにもせずに設定時刻に実行されるようにしたいです。 最初の3秒でB1に現在の時間を取得。 セルA1とA2をクリアしてから設定時間に色をつけるようにしたつもりです。 下記が記述内容です。 Sub 指定時間にマクロを開始() Dim stime As Date Range("A1") = "" Range("A2") = "" Range("B1").Select stime = Now + TimeValue("00:00:03") Application.OnTime TimeValue(stime), "マクロ実行内容", TimeValue("00:05:00") End Sub Sub 時刻の設定1() Application.OnTime EarliestTime:=TimeValue("17:00:00"), Procedure:="Test" End Sub Sub Procedure() Range("A1").Interior.ColorIndex = 8 End Sub Sub 時刻の設定2() Application.OnTime EarliestTime:=TimeValue("18:00:00"), Procedure:="Test" End Sub Sub Procedure2() Range("A2").Interior.ColorIndex = 9 End Sub 実行マクロは有効にしています。 ご教授よろしくお願いします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

標準モジュールにたとえば sub Auto_Open() ’↑標準モジュールに記載する自動起動マクロ  on error resume next  worksheets("シート名").range("A1:A2").clear  application.ontime timevalue("17:0:0"), "Macro1", schedule:=false  application.ontime timevalue("17:0:0"), "Macro1"  application.ontime timevalue("18:0:0"), "Macro2", schedule:=false  application.ontime timevalue("18:0:0"), "Macro2" end sub sub macro1()  worksheets("シート名").range("A1").interior.color = vbred end sub sub macro2()  worksheets("シート名").range("A2").interior.color = vbyellow end sub といった具合に。

kokusan00
質問者

お礼

すぐに回答いただきありがとうございます。できました。こういうやり方もあるのですね。 大変勉強になりました。本当にありがとうございます。 次のステップとして18:00になると17:00に変わったセルの色を戻す(白)ようにやってみたいとと思います。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

Procedure:="Test" とTset で実行するマクロの名前を指定しています。 Sub Procedure2() Range("A2").Interior.ColorIndex = 9 End Sub は Sub Test() Range("A2").Interior.ColorIndex = 9 End Sub ですね。

kokusan00
質問者

お礼

ありがとうございます。大変勉強になりました。

関連するQ&A

専門家に質問してみよう