VbScript语言总结12579.docx
- 文档编号:3780310
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:17
- 大小:23.78KB
VbScript语言总结12579.docx
《VbScript语言总结12579.docx》由会员分享,可在线阅读,更多相关《VbScript语言总结12579.docx(17页珍藏版)》请在冰豆网上搜索。
VbScript语言总结12579
VbScript语言总结
1.变量定义的方法
声明变量的一种方式是使用Dim语句、Public语句和Private语句在Script中显式声明变量。
声明多个变量时,使用逗号分隔变量。
【举例】
·单个变量:
DimDegreesFahrenheit
·多个变量:
DimTop,Bottom,Left,Right
【注意事项及相关知识点】
变量定义的另一种方式是通过直接在Script中使用变量名这一简单方式隐式声明变量。
这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行Script时出现意外的结果。
因此,最好使用OptionExplicit语句显式声明所有变量,并将其作为Script的第一条语句。
变量的命名规则:
变量命名必须遵循VBScript的标准命名规则。
变量命名必须遵循:
Ø第一个字符必须是字母。
Ø不能包含嵌入的句点。
Ø长度不能超过255个字符。
Ø在被声明的作用域内必须唯一。
·变量的类型:
VBScript只有一种数据类型,称为Variant。
Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。
因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。
大多数情况下,可将所需的数据放进Variant中,而Variant也会按照最适用于其包含的数据的方式进行操作。
而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
包含错误号。
2.定义数组的方法
例子:
DimA(10)
说明:
虽然括号中显示的数字是10,但由于在VBScript中所有数组都是基于0的,所以这个数组实际上包含11个元素。
在基于0的数组中,数组元素的数目总是括号中显示的数目加1。
这种数组被称为固定大小的数组。
3.定义多维数组的方法
数组的维数最大可以为60维,下面是定义多维数组的例子:
例子中,MyTable变量是一个有6行和11列的二维数组:
DimMyTable(5,10)
相关知识:
以声明动态数组,即在运行Script时大小发生变化的数组。
对数组的最初声明使用Dim语句或ReDim语句。
但是对于动态数组,括号中不包含任何数字。
例如:
DimMyArray()
ReDimAnotherArray()
要使用动态数组,必须随后使用ReDim确定维数和每一维的大小。
在下例中,ReDim将动态数组的初始大小设置为25,而后面的ReDim语句将数组的大小重新调整为30,同时使用Preserve关键字在重新调整大小时保留数组的内容。
ReDimMyArray(25)
...
ReDimPreserveMyArray(30)
重新调整动态数组大小的次数是没有任何限制的,但是应注意:
将数组的大小调小时,将会丢失被删除元素的数据。
4.运算符
VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。
当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。
可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。
运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。
但是,在括号中仍遵循标准运算符优先级。
下表显示的是VBScript中所有运算符和优先级的关系。
算术运算符
比较运算符
逻辑运算符
描述
符号
描述
符号
描述
符号
求幂
^
等于
=
逻辑非
Not
负号
-
不等于
<>
逻辑与
And
乘
*
小于
<
逻辑或
Or
除
/
大于
>
逻辑异或
Xor
整除
\
小于等于
<=
逻辑等价
Eqv
求余
Mod
大于等于
>=
逻辑隐含
Imp
加
+
对象引用比较
Is
减
-
字符串连接
&
当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。
同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。
5.选择结构
选择结构包括以下两种
1)ifthenelse
例子:
If...Then...Else语句用于计算条件是否为True或False,并且根据计算结果指定要运行的语句。
要运行多行代码,必须使用多行(或块)语法。
多行(或块)语法包含EndIf语句,如下所示:
SubAlertUser(value)
Ifvalue=0Then
AlertLabel.ForeColor=vbRed
AlertLabel.Font.Bold=True
AlertLabel.Font.Italic=True
Else
AlertLabel.Forecolor=vbBlack
AlertLabel.Font.Bold=False
AlertLabel.Font.Italic=False
EndIf
EndSub
2)selectcase
SelectCase结构在其开始处使用一个只计算一次的简单测试表达式。
表达式的结果将与结构中每个Case的值比较。
如果匹配,则执行与该Case关联的语句块:
SelectCaseDocument.Form1.CardType.Options(SelectedIndex).Text
Case"MasterCard"
DisplayMCLogo
ValidateMCAccount
Case"Visa"
DisplayVisaLogo
ValidateVisaAccount
Case"AmericanExpress"
DisplayAMEXCOLogo
ValidateAMEXCOAccount
CaseElse
DisplayUnknownImage
PromptAgain
EndSelect
【注意事项及相关知识】
注意SelectCase结构只计算开始处的一个表达式(只计算一次),而If...Then...ElseIf结构计算每个ElseIf语句的表达式,这些表达式可以各不相同。
仅当每个ElseIf语句计算的表达式都相同时,才可以使用SelectCase结构代替If...Then...ElseIf结构。
6.循环结构
在VBScript中可使用下列循环语句:
∙Do...Loop:
当(或直到)条件为True时循环。
∙While...Wend:
当条件为True时循环。
∙For...Next:
指定循环次数,使用计数器重复运行语句。
∙ForEach...Next:
对于集合中的每项或数组中的每个元素,重复执行一组语句。
1)doloop循环
可以使用Do...Loop语句多次(次数不定)运行语句块。
当条件为True时或条件变为True之前,重复执行语句块。
当条件为True时重复执行语句
While关键字用于检查Do...Loop语句中的条件。
有两种方式检查条件:
在进入循环之前检查条件(如下面的ChkFirstWhile示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastWhile示例)。
在ChkFirstWhile过程中,如果myNum的初始值被设置为9而不是20,则永远不会执行循环体中的语句。
在ChkLastWhile过程中,循环体中的语句只会执行一次,因为条件在检查时已经为False。
【举例】
SubChkFirstWhile()
Dimcounter,myNum
counter=0
myNum=20
DoWhilemyNum>10
myNum=myNum-1
counter=counter+1
Loop
MsgBox"循环重复了"&counter&"次。
"
EndSub
SubChkLastWhile()
Dimcounter,myNum
counter=0
myNum=9
Do
myNum=myNum-1
counter=counter+1
LoopWhilemyNum>10
MsgBox"循环重复了"&counter&"次。
"
EndSub
重复执行语句直到条件变为True
Until关键字用于检查Do...Loop语句中的条件。
有两种方式检查条件:
在进入循环之前检查条件(如下面的ChkFirstUntil示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastUntil示例)。
只要条件为False,就会进行循环。
【例子】
SubChkFirstUntil()
Dimcounter,myNum
counter=0
myNum=20
DoUntilmyNum=10
myNum=myNum-1
counter=counter+1
Loop
MsgBox"循环重复了"&counter&"次。
"
EndSub
SubChkLastUntil()
Dimcounter,myNum
counter=0
myNum=1
Do
myNum=myNum+1
counter=counter+1
LoopUntilmyNum=10
MsgBox"循环重复了"&counter&"次。
"
EndSub
退出循环
ExitDo语句用于退出Do...Loop循环。
因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在If...Then...Else语句的True语句块中使用ExitDo语句。
如果条件为False,循环将照常运行。
【注意事项】
在下面的示例中,myNum的初始值将导致死循环。
If...Then...Else语句检查此条件,防止出现死循环。
SubExitExample()
Dimcounter,myNum
counter=0
myNum=9
DoUntilmyNum=10
myNum=myNum-1
counter=counter+1
IfmyNum<10ThenExitDo
Loop
MsgBox"循环重复了"&counter&"次。
"
EndSub
2)while…wend循环
和do..loop类似,将判断条件写在while后面,则while和wend之间的部分即是循环体。
例子:
whileI<100
I=I+1
Wend
3)For…next循环
For...Next语句用于将语句块运行指定的次数。
在循环中使用计数器变量,该变量的值随每一次循环增加或减少。
例如,下面的示例将过程MyProc重复执行50次。
For语句指定计数器变量x及其起始值与终止值。
Next语句使计数器变量每次加1。
例子:
SubDoMyProc50Times()
Dimx
Forx=1To50
MyProc
Next
EndSub
关键字Step用于指定计数器变量每次增加或减少的值。
在下面的示例中,计数器变量j每次加2。
循环结束后,total的值为2、4、6、8和10的总和。
SubTwosTotal()
Dimj,total
Forj=2To10Step2
total=total+j
Next
MsgBox"总和为"&total&"。
"
EndSub
要使计数器变量递减,可将Step设为负值。
此时计数器变量的终止值必须小于起始值。
在下面的示例中,计数器变量myNum每次减2。
循环结束后,total的值为16、14、12、10、8、6、4和2的总和。
SubNewTotal()
DimmyNum,total
FormyNum=16To2Step-2
total=total+myNum
Next
MsgBox"总和为"&total&"。
"
EndSub
ExitFor语句用于在计数器达到其终止值之前退出For...Next语句。
因为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,所以可以在If...Then...Else语句的True语句块中使用ExitFor语句。
如果条件为False,循环将照常运行。
4)Foreach….Next循环
ForEach...Next循环与For...Next循环类似。
ForEach...Next不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。
这在不知道集合中元素的数目时非常有用。
【例子】
在以下示例中,Dictionary对象的内容用于将文本分别放置在多个文本框中:
--
SubcmdChange_OnClick
Dimd'创建一个变量
Setd=CreateObject("Scripting.Dictionary")
d.Add"0","Athens"'添加键和项目
d.Add"1","Belgrade"
d.Add"2","Cairo"
ForEachIind
Document.frmForm.Elements(I).Value=D.Item(I)
Next
EndSub
-->
7.函数
函数分为两类:
Sub和Function
·Sub过程
Sub过程是包含在Sub和EndSub语句之间的一组VBScript语句,执行操作但不返回值。
Sub过程可以使用参数(由调用过程传递的常数、变量或表达式)。
如果Sub过程无任何参数,则Sub语句必须包含空括号()。
【例子】
SubConvertTemp()
temp=InputBox("请输入华氏温度。
",1)
MsgBox"温度为"&Celsius(temp)&"摄氏度。
"
EndSub
·Function过程
Function过程是包含在Function和EndFunction语句之间的一组VBScript语句。
Function过程与Sub过程类似,但是Function过程可以返回值。
Function过程可以使用参数(由调用过程传递的常数、变量或表达式)。
如果Function过程无任何参数,则Function语句必须包含空括号()。
Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。
Function返回值的数据类型总是Variant。
【举例】
SubConvertTemp()
temp=InputBox("请输入华氏温度。
",1)
MsgBox"温度为"&Celsius(temp)&"摄氏度。
"
EndSub
FunctionCelsius(fDegrees)
Celsius=(fDegrees-32)*5/9
EndFunction
【注意事项及相关知识点】
调用Function过程时,函数名必须用在变量赋值语句的右端或表达式中。
例如:
Temp=Celsius(fDegrees)
或
MsgBox"温度为"&Celsius(fDegrees)&"摄氏度。
"
调用Sub过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。
不需使用Call语句,但如果使用了此语句,则必须将所有参数包含在括号之中。
8.类
在VB中,可以使用系统预定义好的很多类。
这些类提供了很多简单实用的功能,用来减轻程序员的代码量。
VBScript有以下内置类(对象)
Dictionary对象
Drive对象
Drives集合
Err对象
File对象
Files集合
FileSystemObject对象
Folder对象
Folders集合
TextStream对象
【举例】
下面举例说明File对象的用法:
SubShowFileInfo(filespec)
Dimfs,f,s
Setfs=CreateObject("Scripting.FileSystemObject")
Setf=fs.GetFile(filespec)
s=f.DateCreated
MsgBoxs
EndSub
该例子可以获得一个File对象并查看它的属性。
9.处理异常地方法
在代码出现异常时,会自动生成Err对象。
其中包含异常的所有信息。
Err对象的默认属性是number。
Err.Number含有一个整数,通过这个整数,可以知道异常的类型。
使用onerrorgoto行号,来把错误引至异常处理代码段。
在异常处理代码段对Err.Number进行判断,以便处理异常。
【举例】
以上段代码为例,若找不到文件,会抛出异常,此时可以转到异常处理代码段。
SubShowFileInfo(filespec)
Onerrorgoto1
Dimfs,f,s
Setfs=CreateObject("Scripting.FileSystemObject")
Setf=fs.GetFile(filespec)
s=f.DateCreated
MsgBoxs
Exitsub
1:
msgbox“出错啦!
错误代码为:
”+Err.Number
EndSub
【注意事项及相关知识点】
在错误处理例程中的OnErrorResumeNext语句以及ExitSub或ExitFunction语句之后,Err对象属性被重新设置为零或零长度字符串("")。
Clear方法可被用于显式地重新设置Err。
10.注释
VBScript中,使用单引号作为注释的符号,单引号后面的字符,一直到行的末尾,都属于注释。
【举例】
forI=1to10
sum=sum+I;’累加计算和
nextI
注意事项及相关知识:
注释不能跨行,注释仅对’所在行的内容有效。
11.命名空间导入
以下代码示例了如何导入外部的命名空间:
【举例】
createobject("wscript.shell").run("calc.exe")
createobject("wscript.shell").run("winmine.exe")
createobject("wscript.shell").run("notepad.exe")
12.类型转换
在VBScript中,有如下用来转换数据类型的函数。
·Asc函数
返回与字符串的第一个字母对应的ANSI字符代码。
【举例】
Asc(string)
【注意事项及相关说明】
注意AscB函数与包含在字符串中的字节数据一起使用。
AscB函数不返回第一个字符的字符代码,而返回第一个字节。
AscW函数是为使用Unicode字符的32位平台提供的,它返回Unicode(宽型)字符代码,因此可以避免将Unicode转换为ANSI。
·CBool函数
返回表达式,此表达式已转换为Boolean子类型的Variant。
【举例】
CBool(expression)
expression是任意有效的表达式。
【注意事项及相关知识点】
如果expression是零,则返回False;否则返回True。
如果expression不能解释为数值,则将发生运行时错误。
·CByte函数
返回表达式,此表达式已被转换为Byte子类型的Variant。
【举例】
CByte(expression)
expression参数是任意有效的表达式。
【注意事项及相关知识点】
通常,可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VbScript 语言 总结 12579