注册 登录
编程论坛 VB6论坛

求哪位好心人帮忙看下下面这段小程序为何会报错

btt6 发布于 2016-09-14 14:39, 1528 次点击
Private Sub Command1_Click()
Dim a(1 To 11) As Integer
Dim i As Integer
Dim d
For i = 1 To 11
a(i) = i
Next i
  For Each d In a
   
    If d >= 5 And d <= 8 Then
        Continue For
    End If
    If d = 10 Then
        Exit For
    End If
    Print d
Next
5 回复
#2
风吹过b2016-09-14 15:14
        Continue For
这句直接红色,语法错误。
你这里要干什么?
循环里,一般只写 退出的代码,不退出继续循环使用空语句。
#3
btt62016-09-14 16:00
这个是msdn上的一段代码,目的是输出小于5或大于8 的数,为何在vb6里直接报错啊


[此贴子已经被作者于2016-9-14 16:03编辑过]

#4
风吹过b2016-09-14 17:27
首先 确认 VB6 不支持 Continue 关键字。
你查的 MSDN 是哪个语言版本的?? 2005 支持这个关键字,但 不支持 print 关键字。

这个关键字的意思就是 跳过后面的循环内容,开始下一次的循环。
在VB6里,代替的方案有:
1、使用 GOTO 命令。结构化编程规范不建议使用。
2、使用 大型的 IF ..  THEN ..    ELSE   ..    END IF 组进行判断。

程序代码:
Dim a(1 To 11) As Integer
Dim i As Integer
Dim d
For i = 1 To 11
a(i) = i
Next i
  For Each d In a   
    If d >= 5 And d <= 8 Then
    'Continue For
    '继续下一次循环,本次循环处理内容为空
    Else        '条件不成立时,执行循环内容
        If d = 10 Then
            Exit For
        End If
        Print d
    End If
Next
#5
zhuyangzhao2016-09-16 09:18
路过,学习了!
#6
ZHRXJR2016-09-16 11:45
程序代码:
Private Sub Command1_Click()
Dim a(1 To 11) As Integer
Dim i As Integer, k As Integer
Dim d
For i = 1 To 11
a(i) = i
Next i
aa:
  For Each d In a
  k = k + 1
    If d >= 5 And d <= 8 Then
       ' Continue For    'VB没有这个语句,不清楚你使用这个语句的意图
       GoTo aa      '可以模拟Goto方法重新进入FOR
    End If
    If d = 10 Then
        Exit For
    End If
    Print d;
    If k Mod 9 = 0 Then Print
    If k >= 100 Then Exit For   '这里必须有退出循环的语句,否则可能形成死循环
Next
End Sub

Continue For   VB没有这个语句,不清楚你使用这个语句的意图,有实际意义吗? GoTo aa  可以模拟Goto方法重新进入FOR,但你的判断语句 If d >= 5 And d <= 8 Then 始终是成立的,因此没有结束循环语句,肯定是死循环。
在VB中一般使用 Exit For 退出循环,或 Goto 语句跳转,或 Exit Sub 退出过程语句,但再次重新进入循环的程序非常少见,例如你的这个程序。
1