分支结构——If .. Then .. Else ..

根据表达式的值有条件地执行一组语句。
If condition Then statements [Else elsestatements ]
或者,使用块形式的语法:
If condition Then
[statements]
[ElseIf condition-n
Then [elseifstatements]] . . .
[Else [elsestatements]]
End If
 
参数
condition
一个或多个下面两种类型的表达式:
数值或字符串表达式,其运算结果是 True 或 False。如果 condition 是 Null,则 condition 被视为 False。
形如 TypeOf objectname Is objecttype 的表达式。objectname 是任何对象的引用,而 objecttype 则是任何有效的对象类型。如果 objectname 是 objecttype 所指定的一种对象类型,则表达式为 True;否则为 False。
Statements
如果 condition 为 True 时,执行的一条或多条(以冒号分开)语句。
condition-n
同 condition。
elseifstatements
如果相关的 condition-n 为 True时,执行的一条或多条语句。
elsestatements
如果前面没有 condition 或 condition-n 表达式为 True 时,执行的一条或多条语句。
 
说明
对于短小简单的测试,可以使用单行形式(第一种语法)。但块形式(第二种语法)提供了比单行形式更强的结构化与适应性,比较容易阅读、维护及调试。
 
注意   在单行语法中,可以执行多条语句作为 If...Then 判断的结果,但所有语句必须在同一行上并且以冒号分开,如下列语句所示:
If A > 10 Then A = A + 1 : B = B + A : C = C + B
当程序运行到 If 块(第二种语法)时,将测试 condition。如果 condition 是 True,则执行 Then 之后的语句。如 condition 是 False,则每个 ElseIf 部分的条件式(如果有的话)会依次计算并加以测试。当找到某个为 True 的条件时,则其相关的 Then 之后的语句会被执行。如没有一个 ElseIf 语句是 True(或没有 ElseIf 子句),则将执行 Else 之后的语句。执行 Then 或 Else 之后的语句以后,将继续执行 End If 之后的语句。
Else 和 ElseIf 子句都是可选项的。在 If 块中可以放置任意多个 ElseIf 子句,但是都必须在 Else 子句之前。If 块语句可以被嵌套,即被包含在另一个 If 块语句之中。
要判断某个语句是否是一个 If 块,可检查 Then 关键字之后是什么。如果在 Then 的同一行之后还有其他非注释的内容,则此语句就是单行形式的 If 语句。
If 块语句必须是某一行的第一条语句,并且必须以 End If 语句结束。
 
例、查询成绩对应的等级
Dim scort,var
var = InputBox("请输入成绩")
scort = CInt(var)
If scort >= 90 Then
MsgBox ("优秀")
ElseIf scort >= 80 Then
MsgBox ("良好")
ElseIf scort >= 70 Then
MsgBox ("中等")
ElseIf scort >=60 Then
MsgBox ("及格")
Else MsgBox ("不及格")
End If
 

分支结构——Select Case

根据表达式的值执行几组语句之一。也叫做Switch语句。
Select Case testexpression
[Case expressionlist-n
[statements-n]] . . .
[Case Else expressionlist-n
[elsestatements-n]]
End Select
 
参数
testexpression
任意数值或字符串表达式。
expressionlist-n
如 Case 出现则必选项。一个或多个表达式的分界列表。
statements-n
当 testexpression 与 expressionlist-n 中的任意部分匹配时,执行的一条或多条语句。
elsestatements-n
当 testexpression 与 Case 子句的任何部分不匹配时,执行的一条或多条语句。
 
说明
如果 testexpression 与任何 Case expressionlist 表达式匹配,则执行此 Case 子句和下一个 Case 子句之间的语句,对于最后的子句,则会执行该子句到 End Select 之间的语句,然后控制权会转到 End Select 之后的语句。如 testexpression 与多个 Case 子句中的 expressionlist 表达式匹配,则只有第一个匹配后的语句被执行。
Case Else 用于指示若在 testexpression 和任何其他 Case 选项的 expressionlist 之间未找到匹配,则执行 elsestatements。虽然不是必要的,但最好是将 Case Else 语句置于 Select Case 块中以处理不可预见的 testexpression 值。如果没有 Case expressionlist 与 testexpression 匹配且无 Case Else 语句,则继续执行 End Select 之后的语句。
Select Case 语句可以是嵌套的,每一层嵌套的 Select Case 语句必须有与之匹配的 End Select 语句。
 
例、查询成绩对应的等级
Dim scort,var
var = InputBox("请输入成绩")
scort = CInt(var)
Select Case True
Case scort >= 90
MsgBox ("优秀")
Case scort >= 80
MsgBox ("良好")
Case scort >= 70
MsgBox ("中等")
Case scort >= 60
MsgBox ("及格")
Case Else
MsgBox ("不及格")
End Select
 

循环结构——For .. Next

以指定次数重复执行一组语句。
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
 
参数
counter
用做循环计数器的数值变量。这个变量不能是数组元素或用户自定义类型的元素。
start
counter 的初值。
end
counter 的终值。
step
counter 的步长。如果没有指定,则 step 的默认值为 1。
statements
For 和 Next 之间的一条或多条语句,将被执行指定次数。
 
说明
step 参数可以是正数或负数。step 参数值决定循环的执行情况,如下所示:
如果 ... 则循环执行
正数或 0
counter <= end
负数
counter >= end
当循环启动并且所有循环中的语句都执行后,step 值被加到 counter 中。这时,或者循环中的语句再次执行(基于循环开始执行时同样的测试),或者退出循环并从 Next 语句之后的语句继续执行。
 
注意   在循环体内改变 counter 的值,将会使程序代码的阅读和调试变得更加困难。
Exit For 只能用于 For Each...Next 或 For...Next 结构中,提供另一种退出循环的方法。可在语句中的任意位置放置任意个 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
      Next
Next
 
例、生成十个由1到10的随机数
Dim Array(9),i
Randomize
For i = 0 to 9 Step 1
Array(i) = Int(Rnd*10)+1
Next
MsgBox (join(Array))
 

循环结构——For Each .. Next

对数组或集合中的每个元素重复执行一组语句。
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
 
参数
element
用来枚举集合或数组中所有元素的变量。对于集合,element 可能是 Variant 变量、通用 Object 变量或任意指定的 Automation 对象变量。对于数组,element 只能是 Variant 变量。
group
对象集合或数组的名称。
statements
对于 group 中的每一项执行的一条或多条语句。
 
说明
如果 group 中有至少一个元素,就会进入 For Each 块执行。一旦进入循环,便首先对 group 中第一个元素执行循环中的所有语句。只要 group 中还有其他的元素,就会对每个元素执行循环中的语句。当 group 中的没有其他元素时退出循环,然后从 Next 语句之后的语句继续执行。
Exit For 只能用于 For Each...Next 或 For...Next 控制结构中,提供另一种退出循环的方法。可在循环的任意位置放置任意个 Exit For 语句。Exit For 经常和条件判断语句一起使用(例如 If...Then),并立即将控制权转移到 Next 之后的语句。
可以将一个 For Each...Next 循环放置在另一个之中,组成嵌套式 For Each...Next 循环。但是每个循环的 element 必须是唯一的。
 
注意   如果省略 Next 语句中的 element,则程序仍会象已包含它一样继续执行。如果 Next 语句在其相应的 For 语句之前出现,则会产生错误。
 

循环结构——While .. Wend

当指定的条件为 True 时,执行一系列的语句。
While condition
[statements]
Wend
 
参数
condition
数值或字符串表达式,其计算结果为 True 或 False。如果 condition 为 Null,则 condition 被当作 False。
statements
在条件为 True 时执行的一条或多条语句。
 
说明
如果 condition 为 True,则 statements 中所有 Wend 语句之前的语句都将被执行,然后控制权将返回到 While 语句,并且重新检查 condition。如果 condition 仍为 True,则重复执行上面的过程。如果不为 True,则从 Wend 语句之后的语句继续执行程序。
While...Wend 循环可以是多层嵌套结构。每个 Wend 与最近的 While 语句对应。
注意   Do...Loop 语句提供一种结构化与适应性更强的方法以执行循环。
 
例、
Dim Counter
Counter = 0 ' 初始化变量。
While Counter < 20 ' 测试计数器的值。
Counter = Counter + 1 ' 增加计数器。
Alert Counter
Wend ' 计数器大于 19 时终止循环。
 
 

循环结构——Do .. Loop

当条件为 True 时或条件变为 True 之前重复执行某语句块。
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
 
也可以使用下面的语法:
Do [statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
 
参数
condition
数值或字符串表达式,其值为 True 或 False。如果 condition 为 Null,则 condition 被当作 False。
statements
当 condition 为 True 时被重复执行的一条或多条命令。
 
说明
Exit Do 仅可以用在 Do...Loop 控制语句中,提供另一种退出 Do...Loop 的方法。可以在 Do...Loop 语句中的任何位置放置任意个 Exit Do。Exit Do 通常与条件判断语句(如 If...Then )一起使用,将控制传递给紧随在 Loop 语句后面的语句。
当用于嵌套 Do...Loop 中的时候,Exit Do 将控制传递给其所在循环的上一层嵌套循环。
 
例、十进制数转二进制数
Dim StrBin,IntDec,n
IntDec = InputBox("请输入正整数","十进制转二进制")
Do While IntDec > 0
n = IntDec Mod 2
StrBin = Cstr(n) & StrBin
IntDec = IntDec \ 2
Loop
MsgBox (StrBin)
 

VBS脚本编程(4)——流程控制语句的更多相关文章

  1. Vbs 脚本编程简明教程之一

    —为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件 ...

  2. 1-23-shell脚本之-if流程控制语句和for循环语句的使用

    大纲: 1.逻辑判断 2.if流程控制语句 3.for循环控制语句   ---------------------------------------------- 在开始之前,先了解一下逻辑判断符号 ...

  3. shell编程3 ---流程控制语句

    shell编程流程控制语句 一.if流程控制语句 1.单分支if条件判断语句 if [  条件判断式 ]:then     或者   if[ 条件判断式 ] 程序                   ...

  4. VBS脚本编程(10)——编写WMI脚本

    WMI介绍 1.WMI是什么? WMI--Windows管理规范(Windows Management instrumentation). 是一项核心的Windows管理技术. 采用统一的.基于开放标 ...

  5. VBS脚本编程(1)——数据类型、变量和常量

    数据类型 VBS只有一种数据类型,称为Variant.而该类型是可变的,以下是Variant的子类型: 子类型 描述 Empty 未初始化的Variant.对于数值变量,值为0:对于字符串变量,值为零 ...

  6. VBS脚本编程(6)——对象的创建与调用

    对象:严格的说,对象是复杂数据和程序结构在内存中的表现,只有在程序运行时才存在.包含有方法和属性. 对象的创建及用法 1. Set 语句 将对象引用赋给一个变量或属性,或者将对象引用与事件关联. Se ...

  7. VBS脚本编程(3)——常用函数

    数据类型转换函数 1.Hex 函数 返回表示十六进制数字值的字符串. Hex(number) number 参数是任意有效的表达式. 说明 如果 number 参数不是整数,则在进行运算前将其四舍五入 ...

  8. VBS脚本编程(5)——过程与函数

    过程是构成程序的一个模块,往往用来完成一个相对独立的功能.过程可以使程序更清. Sub过程与Function函数的区别: Sub没有返回值,Function有返回值: Sub不能放在表达式中,Func ...

  9. VBS脚本编程(2)——运算符

    算数运算符 用于执行数学计算的运算符. 1.加法运算符( + ) 计算两个数之和. 2.减法运算符( - ) 计算两个数值的差或表示数值表达式的负值. 3.乘法运算符(*) 计算两个数之积. 4.除法 ...

随机推荐

  1. 3D深色金属哥特3D项目工具小图标icon高清设计素材

    3D深色金属哥特3D项目工具小图标icon高清设计素材

  2. Map&Set的理解

    Set子接口 特点:无序.无下标.元素不可重复. 方法:全部继承自Collection中的方法. Set实现类 HashSet: 基于HashCode实现了不重复. 当存入元素的哈希码相同时,会调用e ...

  3. SSM框架整合(Spring+SpringMVC+Mybatis)

    第一步:创建maven项目并完善项目结构  第二步:相关配置 pom.xml 引入相关jar包 1 <properties> 2 <project.build.sourceEncod ...

  4. 创建用户(adduser和useradd)和删除用户(userdel)

    创建用户(adduser和useradd)和删除用户(userdel)及   一  用户创建命令: # adduser  用户名 # useradd  用户名 1) useradd 与 adduser ...

  5. 利用stat指令查看文件创建时间

    -shroot@test-W330-C30:/# stat * 文件:'b' 大小:4096 块:8 IO 块:4096 目录设备:802h/2050d Inode:5636097 硬链接:2权限:( ...

  6. DOCKER学习_015:Docker网络补充

    1 Docker容器使用LINK方式互通 在前面的网络实验中,当同一主机的两个Docker容器,使用Bridge网桥互通时,我们必须使用docker inspect Dockerid查找出Docker ...

  7. C语言中位运算异或“∧”的作用

    1.概念异或运算符"∧"也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即 0∧0=0,0∧1=1, 1^0=1,1∧1=0.运算    ...

  8. 基于开源Tars的动态负载均衡实践

    一.背景 vivo 互联网领域的部分业务在微服务的实践过程当中基于很多综合因素的考虑选择了TARS微服务框架. 官方的描述是:TARS是一个支持多语言.内嵌服务治理功能,与Devops能很好协同的微服 ...

  9. 【odoo】【知识点】视图的继承逻辑

    背景:同一个模块,两组开发人员对同一个模型的form视图进行了二开.在没有指定外部ID的情况下,odoo是如何选择展示展示哪个视图呢? 上干货 odoo在加载视图的时候,首先调用的models.py中 ...

  10. 面试侃集合 | SynchronousQueue公平模式篇

    面试官:呦,小伙子来的挺早啊! Hydra:那是,不能让您等太久了啊(别废话了快开始吧,还赶着去下一场呢). 面试官:前面两轮表现还不错,那我们今天继续说说队列中的SynchronousQueue吧. ...