原帖具体内容忘记了,大概是要在label1上循环显示20到50再到20,反复循环。20,21...49,50,49...21,20,21...49,50,49.....
这个要用if就很容易实现,不用if就得琢磨琢磨,呵呵
昨天忽然想起这个问题,琢磨了两句Private Sub Form_Load()
    Timer1.Interval = 300
    Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
    Static i As Long, m As Long
    m = (m + 31 + i) Mod 31
    i = (0 - ((((m + 31 + i) Mod 31) - m) And &H100) \ 255) Or 1
    Label1.Caption = m + 20
End Sub

解决方案 »

  1.   

    楼主费劲了.
    直接定义一个数组,把20到50再到21的数都放进去.
    然后么,TIMER循环个一百遍啊一百遍.
      

  2.   

    哈哈,我想的方案是把字符放在一个字符串变量里,逗号分开,再用循环+MID显示...
      

  3.   

    凑个热闹Private Sub Timer1_Timer()
    Static i As Long, j As Long
    i = (i + 1) Mod 61
    i = i + ((i = 0) And 1)
    j = (((i >= 31) Or 1) * i + 61) Mod 31
    Label1.Caption = 20 + j
    Debug.Print i, j, 20 + j
    End Sub
      

  4.   

    我对楼主那两句感兴趣,具体是什么意思来着,请解释下    m = (m + 31 + i) Mod 31
        i = (0 - ((((m + 31 + i) Mod 31) - m) And &H100) \ 255) Or 1
      

  5.   

    17楼代码是另外一种思路,很巧妙。17楼j这个变量不需要定义成静态的。
    在数值计算中使用布尔型的值,这件事学C的时候用过一次,从没在VB里面用过,呵呵
      

  6.   

    本帖最后由 bcrun 于 2011-07-29 10:18:32 编辑
      

  7.   

    再次看了下这个题。
    我那解决方法太有局限性了。严重依赖了对bool值的解释(true=-1,false=0)
    如果是遇到像c#这样不能用-1来表示true,0表示false的语言,就无能为力了。还是LZ的方法好,通用。
      

  8.   

    我终于发现差距了..
    Option Explicit
    Dim ARR(60) As Integer
    Dim t As Integer
    Private Sub Form_Load()
        Dim i, j As Integer
        For i = 0 To 30
            ARR(i) = 20 + i
        Next
        For j = 0 To 28
            ARR(i + j) = 49 - j
        Next
        t = 0
        Timer1.Interval = 300
        Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
    Select Case t
        Case 59
            t = 0
        Case Else
            Label1.Caption = ARR(t)
            t = t + 1
    End Select
    End Sub
      

  9.   


     for i = 20 to 50
     Label1.Caption = i
     sleep 500
     next i
     sleep 500
    完了用GOTO跳转第一行 
      

  10.   

    晕,楼上
    Select Case t
        Case 59
    应该为
    Select Case t
        Case 60
    悲剧...
      

  11.   

    ddd:
    for i = 20 to 50
     Label1.Caption = i
     sleep 500
     next i
     sleep 500
    goto ddd
      

  12.   


    Private Sub Form_Activate()
     Dim i%, t!
     While 1
       For i = 20 To 50
           Label1.Caption = i
           GoSub xx1
       Next
       For i = 49 To 21 Step -1
           Label1.Caption = i
           GoSub xx1
       Next
     Wend
    xx1:
     t = Timer
     While Timer - t < 0.3
       DoEvents
     Wend
    ReturnEnd Sub