こんにちは。
>VBAではJavaでいうスレッドのようにバックで動くクラスは無いのでしょうか?
Excel VBAの場合は、そういう機能に対するものは、おそらくはクラスとは言わないですが、厳密にはありませんね。
>これだと毎5秒ごとにマクロを実行ができないですよね。なのでスレッドを考えました。
それは出来ますが、ワークシートの作業に対して、完全にバックで動かし、影響をなくすのは難しいです。実際は、以下でいう、'指定時刻に実行するマクロ名' マクロの内容にも依存してきます。このマクロ側が、どういう性格なものか分からないと、ちょっと難しいですね。ここのカテゴリで一番良くある例としては、楽天のRSSがあります。
お礼側に出ていコードに手を加えてみました。
'おそらく、標準モジュールのほうがよいでしょう。
Private MacroStop As Boolean
Sub 指定時刻にマクロを実行する()
Dim myWait As Integer
Dim 指定時刻 As Date
myWait = 5 '秒
指定時刻 = Now + TimeSerial(0, 0, myWait)
If MacroStop = False Then
Application.OnTime 指定時刻, "指定時刻にマクロを実行する"
Call 指定時刻に実行するマクロ名
Else
MacroStop = False
End
End If
End Sub
Sub 指定時刻に実行するマクロ名()
Cells(1, 1).Value = Cells(1, 1).Value + 1
End Sub
Sub タイマー停止()
MacroStop = True
End Sub
お礼
有難うございました。非常に参考になりました。