電子書籍の厳選無料作品が豊富!

初心者です。エクセルの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


実行マクロは有効にしています。
ご教授よろしくお願いします。

A 回答 (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

といった具合に。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/20 22:49

Procedure:="Test"


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

Sub Test()
Range("A2").Interior.ColorIndex = 9
End Sub
ですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/20 22:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!