# Re: 补充！如何让程式能够执行到第一个 call 呢！还是它是错误的！

Posted by ellis on November 13, 1999 at 08:56:07:

In Reply to: 补充！如何让程式能够执行到第一个 call 呢！还是它是错误的！ posted by 露脚 on November 12, 1999 at 23:08:51:

: : 程式码如下所示：
: : Dim bp1 As Byte
: : Private Sub Command1_Click()
: : Debug.Print "=== command1 ====="
: : Debug.Print " ==== call Show===="
: : Call Show1(1)
: : Call Show1(2)
: : End Sub

: : Private Sub Show1(ByVal bp As Byte)
: : bp1 = bp
: : Debug.Print " ====== into Show ======"
: : For i = 0 To 100
: : For j = 0 To 100
: : Next j
: : Next i

: : If bp = 1 Then
: : Debug.Print " ==== Set timer1 ======"
: : Timer1.Enabled = True
: : Timer1.Interval = 100

: : Debug.Print " ==== Set timer2 ======"
: : Timer2.Enabled = True
: : Timer2.Interval = 100
: : End If
: : Debug.Print " ==== Quit Show ======"

: : End Sub

: : Private Sub Timer1_Timer()

: : If stopa = 2 Then Exit Sub
: : If bp1 = 1 Then
: : Debug.Print " ====== into Timer1 bp1=1======"
: : For i = 0 To 2
: : For j = 0 To 2
: : Next j
: : Next i
: : Debug.Print " ====== Quit Timer1 ======"
: : stopa = stopa + 1
: : End If
: : End Sub

: : Private Sub Timer2_Timer()
: : Static stopa As Byte
: : If stopa = 2 Then Exit Sub
: : If bp1 = 2 Then
: : Debug.Print " ====== into Timer1 bp1=2======"
: : For i = 0 To 2
: : For j = 0 To 2
: : Next j
: : Next i
: : Debug.Print " ====== Quit Timer2 ======"
: : End If
: : stopa = stopa + 1
: : End Sub

以上的程式 i & j只是单纯当延迟用吗?若是则有点
多余的感觉,本身您己用了二个timer控制了,但timer却未
设结束,timer不是执行到end sub就结束了,如您写的Timer1.Interval = 100,是每0.1秒会驱动timer程序一次
故要结束需将timer.enabled设为false.
而STATIC STOPA 会将stopa一直设为2,只是单纯将程式强制脱离timer副程式,但每0.1秒仍会再次执行判断,造成多余.应将If stopa = 2 Then Exit Sub改为
if stopa=2 then
stopa=0
timer1.enabled=false
end if

Follow Ups:

- thanks！小弟已用do...loop 解决！ thanks ！(无内文) 露脚 07:10:00 11/14/99 (0)