VBScript
VBScript简单介绍
一.什么是 VBScript?
Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 Microsoft Internet Information Service 中的 Web 服务器脚本。
易学易用
如果您已了解 Visual Basic 或 Visual Basic for Applications,就会很快熟悉 VBScript。即使您没有学过 Visual Basic,只要学会 VBScript,就能够使用所有的 Visual Basic 语言进行程序设计
。VBScript 数据类型
VBScript 只有一种数据类型,称为 Variant。Variant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为 Variant 是 VBScript 中唯一的数据类型,所以它也是 VBScript 中所有函数的返回值的数据类型。
下表显示 Variant 包含的数据子类型:
子类型 | 描述 |
Empty | 未初始化的 Variant。对于数值变量,值为 0;对于字符串变量,值为零长度字符串 ("")。 |
Null | 不包含任何有效数据的 Variant。 |
Boolean | |
Byte | 包含 0 到 255 之间的整数。 |
Integer | 包含 -32,768 到 32,767 之间的整数。 |
Currency | -922,337,203,685,477.5808 到 922,337,203,685,477.5807。 |
Long | 包含 -2,147,483,648 到 2,147,483,647 之间的整数。 |
Single | 包含单精度浮点数,负数范围从 -3.402823E38 到 -1.401298E-45,正数范围从 1.401298E-45 到 3.402823E38。 |
Double | 包含双精度浮点数,负数范围从 -1.79769313486232E308 到 -4.94065645841247E-324,正数范围从 4.94065645841247E-324 到 1.79769313486232E308。 |
Date (Time) | 包含表示日期的数字,日期范围从公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。 |
String | 包含变长字符串,最大长度可为 20 亿个字符。 |
Object | 包含对象。 |
Error | 包含错误号。 |
二.VBScript 变量
变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储脚本运行时可更改的程序信息
声明变量
声明变量的一种方式是使用 Dim 语句、Public 语句和 Private 语句在脚本中显式声明变量。例如:
Dim Mystr
声明多个变量时,使用逗号分隔变量。例如:
Dim Top, Bottom, Left, Right
命名规则
变量命名必须遵循 VBScript 的标准命名规则。变量命名必须遵循:
第一个字符必须是字母。
不能包含嵌入的句点。
长度不能超过 255 个字符。
在被声明的作用域内必须唯一。
三.VBScript 常数
常数是具有一定含义的名称,用于代替数字或字符串,其值从不改变。
创建常数
您可以使用 Const 语句在 VBScript 中创建用户自定义常数。使用 Const 语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如:
Const MyString = "这是一个字符串。"
Const MyAge = 29
请注意字符串文字包含在两个引号 (" ") 之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号 (#) 之间。例如:
Const GoodDate = #4-1-10#
最好采用一个命名方案以区分常数和变量。这样可以避免在运行脚本时对常数重新赋值。
四.VBScript 运算符
VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。
运算符优先级
当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。
当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符的优先级如下所示:
算术运算符 | 比较运算符 | 逻辑运算符 | |||
描述 | 符号 | 描述 | 符号 | 描述 | 符号 |
求幂 | ^ | 等于 | = | 逻辑非 | Not |
负号 | - | 不等于 | <> | 逻辑与 | And |
乘 | * | 小于 | < | 逻辑或 | Or |
除 | / | 大于 | > | 逻辑异或 | Xor |
整除 | \ | 小于等于 | <= | 逻辑等价 | Eqv |
求余 | Mod | 大于等于 | >= | 逻辑隐含 | Imp |
加 | + | 对象引用比较 | Is | ||
减 | - | ||||
字符串连接 | & |
当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。
字符串连接 (&) 运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。Is 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。
五.使用条件语句
使用条件语句和循环语句可以控制脚本的流程。使用条件语句可以编写进行判断和重复操作的 VBScript 代码。在 VBScript 中可使用以下条件语句:
If...Then...Else 语句
Select Case语句
。对多个条件进行判断:
If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加 ElseIf 子句以扩充 If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。例如:
Sub ReportValue(value)
If value = 0 Then
MsgBox value
ElseIf value = 1 Then
MsgBox value
ElseIf value = 2 then
Msgbox value
Else
Msgbox "数值超出范围!"
End If
End sub
可以添加任意多个 ElseIf 子句以提供多种选择。使用多个 ElseIf 子句经常会变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case 语句。
使用 Select Case 进行判断
Select Case 结构提供了 If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case 语句提供的功能与 If...Then...Else 语句类似,但是可以使代码更加简练易读。
Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case 的值比较。如果匹配,则执行与该 Case 关联的语句块,示例代码如下:
Dim j,itmp
For j=1 to len(runType)
itmp=mid(runType,j,1)
Select Case itmp
Case "0" : call DoAdd() : call DoModify() : call DoDelete()
Case "1" :call DoAdd() : call addUserPower()
Case "2" :Call DoModify()
Case "3" :call DoDelete()
Case "4": call DoSearch()
Case else Call bc.T_Report("测试驱动: 错误的驱动参数")
End Select
Next
请注意 Select Case 结构只计算开始处的一个表达式(只计算一次),而 If...Then...ElseIf 结构计算每个 ElseIf 语句的表达式,这些表达式可以各不相同。仅当每个 ElseIf 语句计算的表达式都相同时,才可以使用 Select Case 结构代替 If...Then...ElseIf 结构。
六.使用循环语句
循环用于重复执行一组语句。循环可分为三类:一类在条件变为 False 之前重复执行语句,一类在条件变为 True 之前重复执行语句,另一类按照指定的次数重复执行语句。
在 VBScript 中可使用下列循环语句:
Do...Loop: 当(或直到)条件为 True 时循环。
While...Wend: 当条件为 True 时循环。
For...Next: 指定循环次数,使用计数器重复运行语句。
For Each...Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。
使用 For...Next
For...Next 语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。
例如,下面的示例将过程 MyProc 重复执行 50 次。For 语句指定计数器变量 x 及其起始值与终止值。Next 语句使计数器变量每次加 1。
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
MyProc
Next
End Sub
七.VBScript 过程
在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程。
Sub 过程
Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。
Function 过程
Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。
调用 Sub 过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用 Call 语句,但如果使用了此语句,则必须将所有参数包含在括号之中。
下面的示例显示了调用 MyProc 过程的两种方式。一种使用 Call 语句;另一种则不使用。两种方式效果相同。
Call MyProc(firstarg, secondarg)
MyProc firstarg, secondarg
请注意当不使用 Call 语句进行调用时,括号被省略。
八.VBScript编码约定
变量命名约定
为提高易读和一致性,请在 VBScript 代码中使用以下变量命名约定:
子类型 | 前缀 | 示例 |
Boolean | bln | blnFound |
Byte | byt | bytRasterData |
Date (Time) | dtm | dtmStart |
Double | dbl | dblTolerance |
Error | err | errOrderNum |
Integer | int | intQuantity |
Long | lng | lngDistance |
Object | obj | objCurrent |
Single | sng | sngAverage |
String | str | strFirstName |
变量作用域
变量应定义在尽量小的作用域中。VBScript 变量 的作用域如下所示:
作用域 | 声明变量处 | 可见性 |
过程级 | 事件、函数或子过程。 | 在声明变量的过程中可见。 |
Script 级 | HTML 页面的 HEAD 部分,任何过程之外。 | 在脚本的所有过程中可见。 |
变量作用域前缀
随着脚本代码长度的增加,有必要快速区分变量的作用域。在类型前缀前面添加一个单字符前缀可以实现这一点,而不致使变量名过长。
作用域 | 前缀 | 示例 |
过程级 | 无 | dblVelocity |
Script 级 | s | sblnCalcInProgress |
对象命名约定
下表列出了 VBScript 中可能用到的对象命名约定(推荐):
对象类型 | 前缀 | 示例 |
3D 面板 | pnl | pnlGroup |
动画按钮 | ani | aniMailBox |
复选框 | chk | chkReadOnly |
组合框、下拉列表框 | cbo | cboEnglish |
命令按钮 | cmd | cmdExit |
公共对话框 | dlg | dlgFileOpen |
框架 | fra | fraLanguage |
水平滚动条 | hsb | hsbVolume |
图像 | img | imgIcon |
标签 | lbl | lblHelpMessage |
直线 | lin | linVertical |
列表框 | lst | lstPolicyCodes |
旋钮 | spn | spnPages |
文本框 | txt | txtLastName |
垂直滚动条 | vsb | vsbRate |
滑块 | sld | sldScale |
请记住以下几点:
每个重要的变量声明都应有内部注释,描述变量的用途。
应清楚地命名变量、控件和过程,仅在说明复杂细节时需要内部注释。
应在脚本的开始部分包含描述该脚本的概述,列举对象、过程、运算法则、对话框和其他系统从属物。有时一段描述运算法则的假码是很有用的。
格式化代码
应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示:
标准嵌套块应缩进 4 个空格。
过程的概述注释应缩进 1 个空格。
概述注释后的最高层语句应缩进 4 个空格,每一层嵌套块再缩进 4 个空格。例如:
'*********************************************************
' Purpose: Locates the first occurrence of a specified user
' in the UserList array.
' Inputs: strUserList(): the list of users to be searched.
' strTargetUser: the name of the user to search for.
' Returns: The index of the first occurrence of the strTargetUser
' in the strUserList array.
' If the target user is not found, return -1.
'*********************************************************
Function intFindUser (strUserList(), strTargetUser)
Dim i ' Loop counter.
Dim blnFound ' Target found flag
intFindUser = -1
i = 0 ' Initialize loop counter
Do While i <= Ubound(strUserList) and Not blnFound
If strUserList(i) = strTargetUser Then
blnFound = True ' Set flag to True
intFindUser = i ' Set return value to loop count
End If
i = i + 1 ' Increment loop counter
Loop
End Function
该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友