エクセルVBA豆知識 ③指定した時間にマクロを実行 の続きです。

途中から読んでおられる方は、

エクセルVBA豆知識 ①ファイル名一覧の作成 から、読み直してください。

 

実例 2秒間隔で画像を変える。

先に、画像を変更するマクロ

Sub ボタン10_Click()
ActiveSheet.Calculate
Range("C3").Value = Range("A" & Range("C2").Value).Value
End Sub

を作成しました、このマクロを

Sub ボタン10_Click()
ActiveSheet.Calculate
Range("C3").Value = Range("A" & Range("C2").Value).Value
Range("C1").Value = Now + TimeValue("00:00:02")
Application.OnTime Range("C1").Value, "ボタン10_Click"
End Sub

に変更してクリックします。

2秒間隔で画像が変わればOKです。

Range("C3").Value = Range("A" & Range("C2").Value).Value を実行してChangeイベントが実行される。

画像が変わる。

Range("C1").Value = Now + TimeValue("00:00:02") C1セルに今の日時の2秒後の時間を入れる。

Application.OnTime Range("C1").Value, "ボタン10_Click"

C1の時刻(つまり今より2秒後)に、ボタン10_Click(自分を)実行する予約をします。

このファイルを閉じるまで、ず~と同じマクロ(ボタン10_Click)が実行されます。

この予約を解除する為に、策に作成した

Sub ボタン12_Click()

On Error Resume Next
Application.OnTime Range("C1").Value, "ボタン10ick", Schedule:=False
End Sub

を実行することで予約が解除されます(繰り返しが止まります)。

・Dir関数

・ActiveSheet.Pictures.Insert(FName)(画像の取り込み)

・Application.OnTimeコマンド

とちょっと風変わりな使い方を紹介しましたが、こんなことも出来るのだ!!と覚えておくと

何かの時に役に立つかもしれません。