いつもこちらで勉強させてもらっています。
VB6.0で
タイマーコントロール上に
Option Explicit
Private CP As Integer
-------------------------------
Private Sub Timer1_Timer()
Dim R5 As Variant
Dim R1の5 As String
Dim i As Integer
For i = 13 To 72
R5 = Form2.Text1(i).text
R1の5 = Format(R5, "hh:nn:ss")
Next
If Time() = R1の5 Then
If (24 <= i >= 13) Then
CP = 5
Else
If 36 <= i >= 25 Then
CP = 4
Else
If 48 <= i >= 37 Then
CP = 3
Else
If 60 <= i >= 49 Then
CP = 2
Else
If 72 <= i >= 61 Then
CP = 1
End If
End If
End If
End If
End If
End If
If Time() = R1の5 Then
Command9_Click
End If
End Sub
このように書いて別フォーム上のテキストボックス(配列にして13〜72とつけています)上の時刻(それぞれに"10:8:0"などの時刻が入っています)がきたらCPをそれぞれの条件にあわせて定義してCommand9_Clickへ移動する…といったことをしたいわけなのですが、なぜか実行一時停止してiの値を見てみると73と出てしまいます。もちろん時間が来てもCommand9_Clickへ移動してくれません。どなたか教えていただけますか。
…このコードだと
For 文の中に Exit For が無いのでどんな条件の時でも i が 72 になるまで
For 文が実行されることになります。For 文が最後まで実行されて、For 文を
抜ける判定の時、i は 73 となってます(条件判定の前に + 1 されるから)。
>If (24 <= i >= 13) Then
> 中略
>End If
とりあえず、上記部分を下記のようにしてみて下さい。
Select Case i
Case 13 To 24: CP = 5
Case 25 To 36: CP = 4
Case 37 To 48: CP = 3
Case 49 To 60: CP = 2
Case 61 To 72: CP = 1
Case Else: CP = 0
End Select
あと、Nextの位置をよく考えてみましょう!
その位置で良いのかな?
特攻隊長まるるう様、からす様、ありがとうございました!
Nextの位置は最後のEnd Subの上にもっていったらうまくいきました。
これからもよろしくお願いします。