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 只有一种数据类型,称为 VariantVariant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为 Variant VBScript 中唯一的数据类型,所以它也是 VBScript 中所有函数的返回值的数据类型。

下表显示 Variant 包含的数据子类型:

子类型

描述

Empty

未初始化的 Variant。对于数值变量,值为   0;对于字符串变量,值为零长度字符串 ("")。

Null

不包含任何有效数据的 Variant

Boolean

包含 True False

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 的标准命名规则。变量命名必须遵循:

 

三.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 语句的一种变形允许您从多个条件中选择,即添加 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 中可使用下列循环语句:

使用 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 过程是包含在 SubEnd Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。

Function 过程

Function 过程是包含在 FunctionEnd 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

 

请记住以下几点:

格式化代码

应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示:

'*********************************************************
' 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好友

 

 

粤ICP备19116230号
友情链接: 码农藏书阁 天天链