分単位のインターバル処理を行いたい

[戻る]
新人くん 2002/09/13(金) 00:58:56
フォーム上のタイマーコントロールから、別クラスファイルに記述した
Public subを一定時間毎に呼び出したいのですが、ちと行き詰まってます。

Dim count as integer

Private Sub Form load()
......Time.Interval = X * 1000
count=0

Private Sub Time.Timer()
    count = count + 1
    if count < 60 then Exit Sub
    Else
        call Targetsub
        count = 0
    End if

(別クラスファイル)
Public Sub Targetsub()
......

タイマーは1分強以上の時間を直接計測できないとの事なので、
例えば呼び出し間隔をX分と入力した場合、タイマー自体のインターバルはX秒に設定して、
タイマー起動時にカウント変数を1追加、カウントが60になった時に問題の関数を呼び
出す、という方法を考えたのですが
タイマーの起動時間がバラバラになってしまいます。
タイマーの内部インターバル上限「以上」の時間を計測する方法について、
どなたかご教授頂ければ幸いです。

べーちゃん 2002/09/13(金) 07:28:28
こんにちは新人くん、べーちゃんです。

次のようなコードでうまくいきませんか。

>Private mdtmNext As Date
>
>Private Sub Form_Load()
>
>    mdtmNext = CDate(Format(DateAdd("n", X, Now), "yyyy/mm/dd hh:nn:00"))
>    Timer1.Interval = 5000
>
>End Sub
>
>Private Sub Timer1_Timer()
>
>    Dim dtmNow As Date
>    
>    dtmNow = Now
>    If mdtmNext < dtmNow Then
>        '何らかの処理
>        mdtmNext = CDate(Format(DateAdd("n", X, Now), "yyyy/mm/dd hh:nn:00"))
>    End If
>
>End Sub

タイマのインターバルはとりあえず5秒に設定していますが、頻繁すぎると
他の処理に差し障るので適当な値を設定したほうがいいです。
Xに分指定のインターバルを設定します。

べーちゃん 2002/09/13(金) 07:34:30
一応上記プログラムはVB6で確認していますが、

> 発言される前に「使用上の注意」を必ずお読み下さい。

ご理解願います。

新人くん 2002/09/16(月) 16:12:44
[[解決]]
まだ若干のズレは出ていますが、およそ定時に動くようになりました。
有難うございました。

古いスレッドには追加発言できません。