一路探索者

导航

 

      VB6.0控制语句有If...Then、Select Case、For...Next、For Each...Next、Do...Loop、While...Wend共6种。以下分别介绍它们的用法。

一、If...Then...Else 语句      

根据表达式的值有条件地执行一组语句。

语法

If condition Then [statements][Else elsestatements]

或者,可以使用块形式的语法:

If condition Then

    [statements]

[ElseIf condition-n Then

    [elseifstatements] ...

[Else

    [elsestatements]]

End If

<一>、If...Then...Else 语句的语法具有以下几个部分

1、condition

必要参数。一个或多个具有下面两种类型的表达式:

(1)、数值表达式或字符串表达式,其运算结果为 True 或 False。如果 condition 为 Null,则 condition 会视为 False。

(2)、TypeOf objectname Is objecttype 形式的表达式。其中的 objectname 是任何对象的引用,而 objecttype 则是任何有效的对象类型。如果 objectname 是 objecttype 所指定的一种对象类型,则表达式为 True,否则为False。 2、statements

在块形式中是可选参数;但是在单行形式中,且没有 Else 子句时,则为必要参数。一条或多条以冒号分开的语句,它们在 condition 为 True 时执行。

3、condition-n

可选参数。与 condition 同。

4、elseifstatements

可选参数。一条或多条语句,它们在相关的 condition-n 为 True 时执行。

5、elsestatements

可选参数。一条或多条语句,它们在前面的 condition 或 condition-n 都不为 True 时执行。

<二>、说明

可以使用单行形式(第一种语法)来做短小简单的测试。但是,块形式(第二种语法)则提供了更强的结构化与适应性,并且通常也是比较容易阅读、维护及调试的。

注意:在单行形式中,按照 If...Then 判断的结果也可以执行多条语句。所有语句必须在同一行上并且以冒号分开,如下面语句所示:

If A > 10 Then A = A + 1 : B = B + A : C = C + B

在块形式中,If 语句必须是第一行语句。其中的 Else、 ElseIf,和 End If 部分可以只在之前加上行号或行标签。If 块必须以一个 End If 语句结束。

要决定某个语句是否为一个 If 块,可检查 Then 关键字之后是什么。如果在 Then 同一行之后,还有其它非注释的内容,则此语句就是单行形式的 If 语句。

Else 和 ElseIf 子句都是可选的。在 If 块中,可以放置任意多个 ElseIf 子句,但是都必须在 Else 子句之前。If 块也可以是嵌套的。

当程序运行到一个 If 块(第二种语法)时,condition 将被测试。如果 condition为 True,则在 Then 之后的语句会被执行。如果 condition 为 False,则每个 ElseIf 部分的条件式(如果有的话)会依次计算并加以测试。如果找到某个为 True 的条件时,则其紧接在相关的 Then 之后的语句会被执行。如果没有一个 ElseIf 条件式为 True(或是根本就没有 ElseIf 子句),则程序会执行 Else 部分的语句。而在执行完 Then 或 Else 之后的语句后,会从 End If 之后的语句继续执行。

提示:根据单一表达式来执行多种可能的动作时,Select Case 更为有用。不过,TypeOf objectname Is objecttype 子句不能在 Select Case 语句中使用。

注意:TypeOf 不能与诸如 Long、Integer 以及其它不是 Object 的固定数据类型一起使用。

 

二、Select Case 语句      

根据表达式的值,来决定执行几组语句中的其中之一。

语法

Select Case testexpression

    [Case expressionlist-n

        [statements-n]] ...

    [Case Else

        [elsestatements]]

End Select

<一>、Select Case 语句的语法具有以下几个部分

1、testexpression

必要参数。任何数值表达式或字符串表达式。

2、expressionlist-n

如果有 Case 出现,则为必要参数。其形式为 expression,expression To expression,Is comparisonoperator expression的一个或多个组成的分界列表。To 关键字可用来指定一个数值范围。如果使用 To 关键字,则较小的数值要出现在 To 之前。使用 Is 关键字时,则可以配合比较运算符(除 Is 和 Like 之外)来指定一个数值范围。如果没有提供,则 Is 关键字会被自动插入。

3、Statements-n

可选参数。一条或多条语句,当 testexpression 匹配expressionlist-n中的任何部分时执行。

4、elsestatements

可选参数。一条或多条语句,当 testexpression 不匹配 Case 子句的任何部分时执行。

<二>、说明

如果 testexpression 匹配某个 Case expressionlist 表达式, 则在 Case 子句之后,直到下一个 Case 子句的 statements 会被执行;如果是最后一个子句,则会执行到 End Select。然后控制权会转移到 End Select 之后的语句。如果 testexpression 匹配一个以上的 Case 子句中的 expressionlist 表达式,则只有第一个匹配后面的语句会被执行。

Case Else 子句用于指明 elsestatements,当 testexpression 和所有的 Case 子句中的 expressionlist 都不匹配时,则会执行这些语句。虽然不是必要的,但是在 Select Case 区块中,最好还是加上 Case Else 语句来处理不可预见的 testexpression 值。如果没有 Case expressionlist 匹配 testexpression,而且也没有 Case Else 语句,则程序会从 End Select 之后的语句继续执行。

可以在每个 Case 子句中使用多重表达式或使用范围,例如,下面的语句是正确的:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

注意:Is 比较运算符和使用在 Select Case 语句中的 Is 关键字并不相同。

也可以针对字符串指定范围和多重表达式。在下面的例子中,Case 所匹配的字符串为:等于 everything、按英文字母顺序落入从 nuts 到 soup 之间的字符串、以及 TestItem 所代表的当前值。

Case "everything", "nuts" To "soup", TestItem

Select Case 语句也可以是嵌套的。但每个嵌套的 Select Case 语句必须要有相应的 End Select 语句。

 

三、For...Next 语句      

以指定次数来重复执行一组语句。

语法

For counter = start To end [Step step]

    [statements]

    [Exit For]

    [statements]

Next [counter]

<一>、For匩ext 语句的语法具有以下几个部分

1、Counter

必要参数。用做循环计数器的数值变量。这个变量不能是 Boolean 或数组元素。

2、Start

必要参数。counter 的初值。

3、End

必要参数,counter 的终值。

4、Step

可选参数。counter 的步长。如果没有指定,则 step 的缺省值为 1。

5、Statements

可选参数。放在 For 和 Next 之间的一条或多条语句,它们将被执行指定的次数。

<二>、说明

step 参数可以是正数或负数。step 参数值决定循环的执行情况,如下所示:

值                     执行循环的条件

正数或 0          counter <= end

负数                counter >= end

当所有循环中的语句都执行后,step 的值会加到 counter 中。此时,循环中的语句可能会再次执行(基于循环开始执行时同样的测试),也可能是退出循环并从 Next 语句之后的语句继续执行。

提示:在循环中改变 counter 的值,将会使程序代码的阅读和调试变得更加困难。

循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。 Exit For经常在条件判断之后使用,例如 If...Then,并将控制权转移到紧接在 Next 之后的语句。

可以将一个 For...Next 循环放置在另一个 For...Next 循环中,组成嵌套循环。不过在每个循环中的 counter 要使用不同的变量名。下面的体系结构是正确的:

For I = 1 To 10

    For J = 1 To 10

        For K = 1 To 10

            ...

        Next K

    Next J

Next I

注意:如果省略 Next 语句中的 counter,就像 counter 存在时一样执行。但如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。

 

四、For Each...Next 语句      

针对一个数组或集合中的每个元素,重复执行一组语句。

语法

For Each element In group

    [statements]

    [Exit For]

    [statements]

Next [element]

<一>、For...Each...Next 语句的语法具有以下几个部分

1、Element

必要参数。用来遍历集合或数组中所有元素的变量。对于集合来说,element 可能是一个 Variant 变量、一个通用对象变量或任何特殊对象变量。对于数组而言,element只能是一个 Variant 变量。

2、Group

必要参数。对象集合或数组的名称(用户定义类型的数组除外)。

3、Statements

可选参数,针对 group 中的每一项执行的一条或多条语句。

 

<二>、说明

如果集合中至少有一个元素,就会进入 For...Each 块执行。一旦进入循环,便先针对 group 中第一个元素执行循环中的所有语句。如果 group 中还有其它的元素,则会针对它们执行循环中的语句,当 group 中的所有元素都执行完了,便会退出循环,然后从 Next 语句之后的语句继续执行。

在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。Exit For经常在条件判断之后使用,例如 If...Then,并将控制权转移到紧接在 Next 之后的语句。

可以将一个 For...Each...Next 循环放在另一个之中来组成嵌套式 For...Each...Next 循环。但是每个循环的 element 必须是唯一的。

注意:如果省略 Next 语句中的 element,就像 element 存在时一样执行。如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。

不能在 For...Each...Next 语句中使用用户自定义类型数组,因为 Variant 不能包含用户自定义类型。

 

五、Do...Loop 语句      

当条件为 True 时,或直到条件变为 True 时,重复执行一个语句块中的命令。

语法

Do [{While | Until} condition]

    [statements]

    [Exit Do]

    [statements]

Loop

或者可以使用下面这种语法:

Do

    [statements]

    [Exit Do]

    [statements]

Loop [{While | Until} condition]

<一>、Do Loop 语句的语法具有以下几个部分

1、condition

可选参数。数值表达式或字符串表达式,其值为 True 或 False。如果 condition 是 Null,则 condition 会被当作 False。

2、statements

一条或多条命令,它们将被重复当或直到 condition 为 True。

<二>、说明

在 Do...Loop 中可以在任何位置放置任意个数的 Exit Do 语句,随时跳出 Do...Loop 循环。Exit Do 通常用于条件判断之后,例如 If...Then,在这种情况下,Exit Do 语句将控制权转移到紧接在 Loop 命令之后的语句。

如果 Exit Do 使用在嵌套的 Do...Loop 语句中,则 Exit Do 会将控制权转移到 Exit Do 所在位置的外层循环。

 

六、While...Wend 语句      

只要指定的条件为 True,则会重复执行一系列的语句。

语法

While condition

    [statements]

Wend

<一>、While...Wend 语句的语法具有以下几个部分

1、condition

必要参数。数值表达式或字符串表达式,其计算结果为 True 或 False。如果 condition 为 Null,则 condition 会视为 False。

2、statements

可选参数。一条或多条语句,当条件为 True 时执行。

<二>、说明

如果 condition 为 True,则所有的 statements 都会执行,一直执行到 Wend 语句。然后再回到 While 语句,并再一次检查 condition,如果 condition 还是为 True,则重复执行。如果不为 True,则程序会从 Wend 语句之后的语句继续执行。

While...Wend 循环也可以是多层的嵌套结构。每个 Wend 匹配最近的 While 语句。

提示:Do...Loop 语句提供了一种结构化与适应性更强的方法来执行循环。

posted on 2021-07-08 09:29  一路探索者  阅读(1050)  评论(0)    收藏  举报