我查了一下好像在VB中没有CONTINUE这样的函数,说有GOTO,可是在脚本中为什么用了呢,
For i=1 To 7
If (i Mod 2)=0 Then 
Goto NextFor
End If
MsgBox i
NextFor
Next
我这样说第一个GOTO那里有错误什么的,在VB脚本中这个是怎么用的?

解决方案 »

  1.   

    nextfor要打标For i=1 To 7
    If (i Mod 2)=0 Then 
    Goto NextFor
    End If
    MsgBox i
    NextFor
    Next
    nextFor:
    ......
      

  2.   

    错了,不是在nextfor打标,你要把要转的地方设置个标志位
    For i=1 To 7
    If (i Mod 2)=0 Then 
    Goto flag
    End If
    MsgBox i
    NextFor
    Flag:
    Next
      

  3.   

    不过这种写法很不规范,好的程序员是不会用goto的,会造成程序混乱不堪,如果我拿到一个程序中有goto,我会很鄙视此程序的编写者的,切记切记
      

  4.   

    这个我试过不行的说第一个GOTO那里缺少语句
      

  5.   

    呵呵,那这个不用GOTO的话有更好的处理办法吗?
      

  6.   

    把flag写成过程 然后
    For i=1 To 7
    If (i Mod 2)=0 Then 
    Call flag
                                         Next
    End If
    MsgBox i
    NextFor
    Next
    这样可以吗?
      

  7.   

    不用goto
    For i=1 To 7
    If (i Mod 2)=0 Then 
        exit for
    End If
    MsgBox i
    Next
      

  8.   

    老大,原来你是想当符合条件的时候继续循环啊,那你干吗这么写啊
    For i=1 To 7
    If (i Mod 2)=0 Then 
        MsgBox i
    End If
    Next
    直接这样写不就行了
      

  9.   

    上面的把If (i Mod 2)=0 Then 这句改成If (i Mod 2)<>0 Then 
    应该就可以满足了吧,还要那么麻烦,要什么goto,汗啊...
      

  10.   

    不是想跳出来的,只是想给出这1-7,7个数,如果是单数就弹对话框 ,不是就不弹的,这里只是简单一例,所以不能写成
    For i=1 To 7
    If (i Mod 2)=1 Then 
        msgbox i'这里要做很多其他的事的
    End If
    Next
      

  11.   

    做多少事情都可以这样写啊,未必非要goto不可非要用goto的话
    Private Sub Command1_Click()
    Dim i As Integer
    For i = 1 To 7
        If (i Mod 2) = 0 Then
            GoTo Flag
        End If
        MsgBox i
    Flag:
    Next
    End Sub
    用这个吧,我测过啊,弹出来1,3,5,7的,不会错的,你把上面的完整的考过去在新程序里面看,我试没问题的啊
      

  12.   

    还有for 结构好象没有nextfor的,有next i的
      

  13.   

    我的那个NEXTFOR和你这个FLAG:是一样的,只是一个标记的,我是在VB脚本里的,总说错误的
      

  14.   

    楼上说的VBA和VBScript是一回事吗?
      

  15.   

    For i=1 To 7 Step 2
    MsgBox i
    Next
      

  16.   

    For i=1 To 7
        If (i Mod 2) Then 
    MsgBox i
        End If
    Next
      

  17.   

    GOTO在有些时候还是蛮好用的~毕竟可以用来解决很多正常的程序顺序无法解决的事情~
      

  18.   

    For i=1 To 7
    If (i Mod 2)=0 Then 
    Call flag
                                         Next
    End If
    MsgBox i
    NextFor
    Next
    老兄,不用goto可以不??你加上 goto也可以的啊
      

  19.   

    for 变量=初值 TO 终值 [STEP步长]
    <过程体>
      ……
    NEXT 变量            ‘或者NEXTFOR 是一样的这是词句格式,不是行标号,GOTO语句需和行标号结合使用,行标号格式:
    标实符:
    注后边必有冒号!!!
      

  20.   

    lv1(天下) ( ) 信誉:100  2006-04-08 10:57:00  得分: 0  
     
     
       不过这种写法很不规范,好的程序员是不会用goto的,会造成程序混乱不堪,如果我拿到一个程序中有goto,我会很鄙视此程序的编写者的,切记切记
      
     
    ===================================================
    你鄙视那是因为你的无知,不要人云亦云
    goto用得好,只会让程序更清晰明了
      

  21.   

    同意楼上观点一开始认为goto好(所以被创造出来)
    后来被认为不好(被鄙视)
    再后来又被认为好(在合理运用的前提下)好象正好符合哲学里的什么原理
    呵呵....
      

  22.   

    呵呵,谢谢大家的回复,我的目的是这样的,我用的是VB脚本,我从数据库中查询出记录来
    for i=1 to Data.RecordCount
      if Data("ID")="1" then
      end ifnext
      

  23.   

    刚才没写完
    呵呵,谢谢大家的回复,我的目的是这样的,我用的是VB脚本,我从数据库中查询出记录来
    for i=1 to Data.RecordCount
      if Data("ID")="1" then//这里面有些记录不符合条件,所以不做下面的Do SomeThing处                       理,  所以想在这里继续下一个循环的
      //继续下一条记录
      end if
      //Do SomeThing
    next
    不知道这样明白我的意思吗
      

  24.   

    看楼主的要求,不用goto就可以完成,用简单的If语句就可以for i=1 to Data.RecordCount
      if Data("ID")<>"1" then  //如果 Data("ID")="1" ,是不会Do SomeThing的,直接跳到下一个循环
         //Do SomeThing
      end if  
    next
      

  25.   

    是呀,楼上说的很对,可是有一个问题就是
    for i=1 to Data.RecordCount
      if Data("ID")<>"1" then  //这里的Do SomeThing 的代码很多,行也多,可能看起来不好看
         //Do SomeThing
      end if  
    next
    为了看起来好看,所以想一下,比如说有continue这样的方法
    for i=1 to Data.RecordCount
      if Data("ID")="1" then  
         continue
      end if  
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
    next
    想这样,在看和维护的时候感觉都很方便的
      

  26.   

    是这样呀,那只好用GoTo语句了,这样写吧:for i=1 to Data.RecordCount
      if Data("ID")="1" then  
         goto NextFor
      end if  
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      //Do SomeThing
      NexeFor:  '<-----注意,这里的冒号不能去掉
    next
      

  27.   

    你鄙视那是因为你的无知,不要人云亦云
    goto用得好,只会让程序更清晰明了------------------------------------
    我可能无知,但是你不能就凭这点来说服我不鄙视用goto的傻货,毕竟在我多年的从业经验里,用好goto的傻货我从来没见过,当一个大型的项目里面突然有个傻货用了一个goto把你goto 到不知道那里去的时候,你就该知道这种不用goto的习惯是多么的难能可贵了.而且,这只是我从以往经验中得到的个人喜好而已,好象跟无不无知无关.但是,请用另一种让我信服的理由来让我不鄙视用goto的傻货可否?用的好,何谓用的好?你能把握吗,其实我也用goto,我在大量的代码里面用on error goto XXX,我自问这个goto的自由度太大了点,我把握不好,也没有见过能用到出神入化的,包括一些我比较崇拜的高人们.当初学basic的时候大家都是goto上来的,我从来没想过有朝一日对goto是这么的深恶痛绝,这是以往的惨痛经验让我这样的痛恨goto.
    而且,你说我无知,你又有多有知呢,看你这么为goto张目,估计也是一新手上路,还没见识过goto 的厉害吧,你个傻货,等着让goto把你goto到天外吧
      

  28.   

    那就不用for...next结构吧:i = 0
    Do While i < {记录数}
        i = i + 1
        If {条件} Then Loop
        'Do something
    Loop
      

  29.   

    另有一条,你用了goto,只能说你没有团队意识,你可知道你的goto能让你的同事们下多大的工夫才能理解你的goto的含义,goto的无条件性让你爽了,你可以无条件的goto了,当你的某个同事要研究你的代码时,你认为这里没条件的跳转一定能让他理解否?就算你自己在隔了几天来看这个goto,你就一定能想起来自己为什么在这goto吗?
    知道现在的牛人是谁吗?真正的牛人是团队,现在没有一个牛人可以牛过一个团队的,没有团队意识,等着被淘汰吧,傻货
      

  30.   

    楼上的,我在这里只是问问题,希望不要有什么其他不愉快的发生,大家都是来学习的。Loop可以这样吗,还真的不知道了
      

  31.   

    <job>
    <script language="VBScript" >
    For i=1 To 7
      If (i Mod 2) Then  
         Goto NextFor'说这里有错误的
      End If  
      MsgBox i
      NexeFor:  '<-----注意,这里的冒号不能去掉
    Next
    </script>
    </job><job>
    <script language="VBScript" >
    i = 0
    Do While i < 7
        If (i Mod 2) Then 
         Loop'说这里缺少DO
        End If
        MsgBox i
    Loop
    哎呀,真麻烦,说有错误,希望几位大侠给看看的
    </script>
    </job>
      

  32.   

    个人认为,GOTO用于结束一个复杂的重循环时还是挺管用的,只要注意不要跳得太远就行了.
    只要在GOTO  后加上注释,也不会降低代码的可读性.
      

  33.   

    讨论问题 不要人身攻击阿
    Goto毕竟是太活跃了
      

  34.   

    这个问题很容易理解,
    <job>
    <script language="VBScript" >
    For i=1 To 7
      If (i Mod 2) Then  
         Goto NextFor'说这里有错误的
      End If  
      MsgBox i
      NexeFor:  '<-----注意,这里的冒号不能去掉
    Next
    </script>
    </job><job>
    <script language="VBScript" >
    i = 0
    Do While i < 7
        If (i Mod 2) Then 
         Loop'说这里缺少DO
        End If
        MsgBox i
    Loop
    哎呀,真麻烦,说有错误,希望几位大侠给看看的
    </script>
    </job>
    少loop是因为的你的LOOP在if语句里,所以不会执行,所以vb报告缺少loop
    把loop放到if后就可以了,而缺少do就是vb检测不出你写do,因为被if屏蔽掉了
    这是你的问题,也就是你代码出现的问题,建议不要使用这种方法问题很多。
    至于代码你写的比较乱,可以按照我的思路,重新写,就这样的程序问题肯定多
      

  35.   

    谢谢楼上的回复,我想楼上是否没看出我意思呀,我是想做一个循环,有些记录不满足条件,想继续循环,所以在IF里加了个LOOP,满足条件的可在进行下面的处理,不知道楼上能否给出一点点的代码,在次谢谢
      

  36.   

    Goto 在编程中 有 “凌波微步”之美称 啊
      

  37.   

    复杂,只要说:goto next就可以了
      

  38.   

    GoTo 语句示例
    本示例使用 GoTo 语句在一个过程内的不同程序段间作流程控制,不同程序段用不同的“程序标签”来区隔。Sub GotoStatementDemo()
    Dim Number, MyString
       Number = 1    ' 设置变量初始值。
       ' 判断 Number 的值以决定要完成那一个程序区段(以“程序标签”来表式)。
       If Number = 1 Then GoTo Line1 Else GoTo Line2
       
    Line1:
       MyString = "Number equals 1"
       GoTo LastLine   ' 完成最后一行。
    Line2:
       ' 下列的语句根本不会被完成。
       MyString = "Number equals 2"
    LastLine: 
       Debug.Print MyString   ' 将“"Number equals 1"”显示在“立即”窗口。
    End Sub出自msdn...