タイマーコントロールのインターバルに連動して
プログレスバーがMaxになるようにしたいんですけれども
ご存知の方ご指導おねがいいたします。
ダメもとで以下のようにコーディングしたんですが、
プロパティ Timer.Interval=4000
progbar.Max=100 progbar.Min=0
Private Sub Timer1_Timer()
If Timer1.Enabled = False Then
progbar.Value = 0
End If
If Timer1.Interval = Timer1.Interval / 4 Then
progbar.Value = 25
ElseIf Timer1.Interval = Timer1.Interval / 2 Then
progbar.Value = 50
ElseIf Timer1.Interval = Timer1.Interval * 0.75 Then
progbar.Value = 75
ElseIf Timer1.Interval = Timer1.Interval Then
progbar.Value = 100
End If
Call check
End Sub
やはり、Timer.Intervalは常に内部では4000のままなので
プログレスバーも常にMaxになってしまいます。
> If Timer1.Enabled = False Then
> progbar.Value = 0
> End If
Timer1.EnabledがFalseの場合、このイベント自体が発生しないので意味ないです。
> If Timer1.Interval = Timer1.Interval / 4 Then
> progbar.Value = 25
> ElseIf Timer1.Interval = Timer1.Interval / 2 Then
> progbar.Value = 50
> ElseIf Timer1.Interval = Timer1.Interval * 0.75 Then
> progbar.Value = 75
> ElseIf Timer1.Interval = Timer1.Interval Then
> progbar.Value = 100
> End If
タイマーコントロールの動きをご存知ならこんな意味不明なプログラムは書かないと思いますが……。
Intervalはタイマーイベントの発生間隔(ミリ秒単位)です。
4000に設定した場合4秒ごとにタイマーイベントが発生します。
プログラム内でIntervalを変更しない限り、自動的に変わるものではありません。
とりあえず、こんな処理でも作ればタイマーコントロールがどんなものか分かるでしょう。
Private Sub Timer1_Timer()
With progbar
If .Value < .Max Then
.Value = .Value + 1
Else
Timer1.Enabled = False
End If
End With
End Sub
nanashiさんお答えいただいてありがとうございました。
nanashiさんに紹介していただいたコードを
参考に簡単なプログラムを作ってから動きを把握してから
以下のようにして正常に起動させることができました。
ありがとうございました。
Private Sub Timer1_Timer()
progbar.Value = progbar.Value + 10
If progbar.Value >= progbar.Max Then
Timer1.Enabled = False
progbar.Value = progbar.Min
Timer1.Enabled = False
Call check
End If
End Sub
解決チェックし忘れてました。
編集 削除