版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE4VbScript语言总结变量定义的方法声明变量的一种方式是使用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之间的整数。的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。下表显示的是VBScript中所有运算符和优先级的关系。算术运算符比较运算符逻辑运算符描述符号描述符号描述符号求幂^等于=逻辑非Not负号-不等于<>逻辑与And乘*小于<逻辑或Or除/大于>逻辑异或Xor整除\小于等于<=逻辑等价Eqv求余Mod大于等于>=逻辑隐含Imp加+对象引用比较Is
减-
字符串连接&
当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。选择结构 选择结构包括以下两种1)ifthenelse例子:If...Then...Else语句用于计算条件是否为True或False,并且根据计算结果指定要运行的语句。要运行多行代码,必须使用多行(或块)语法。多行(或块)语法包含EndIf语句,如下所示:SubAlertUser(value)Ifvalue=0ThenAlertLabel.ForeColor=vbRedAlertLabel.Font.Bold=TrueAlertLabel.Font.Italic=TrueElseAlertLabel.Forecolor=vbBlackAlertLabel.Font.Bold=FalseAlertLabel.Font.Italic=FalseEndIfEndSub2)selectcaseSelectCase结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个Case的值比较。如果匹配,则执行与该Case关联的语句块:SelectCaseDocument.Form1.CardType.Options(SelectedIndex).TextCase"MasterCard"DisplayMCLogoValidateMCAccountCase"Visa"DisplayVisaLogoValidateVisaAccountCase"AmericanExpress"DisplayAMEXCOLogoValidateAMEXCOAccountCaseElseDisplayUnknownImagePromptAgainEndSelect【注意事项及相关知识】注意SelectCase结构只计算开始处的一个表达式(只计算一次),而If...Then...ElseIf结构计算每个ElseIf语句的表达式,这些表达式可以各不相同。仅当每个ElseIf语句计算的表达式都相同时,才可以使用SelectCase结构代替If...Then...ElseIf结构。循环结构在VBScript中可使用下列循环语句:Do...Loop:当(或直到)条件为True时循环。While...Wend:当条件为True时循环。For...Next:指定循环次数,使用计数器重复运行语句。ForEach...Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。doloop循环可以使用Do...Loop语句多次(次数不定)运行语句块。当条件为True时或条件变为True之前,重复执行语句块。当条件为True时重复执行语句While关键字用于检查Do...Loop语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的ChkFirstWhile示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastWhile示例)。在ChkFirstWhile过程中,如果myNum的初始值被设置为9而不是20,则永远不会执行循环体中的语句。在ChkLastWhile过程中,循环体中的语句只会执行一次,因为条件在检查时已经为False。【举例】SubChkFirstWhile()Dimcounter,myNumcounter=0myNum=20DoWhilemyNum>10myNum=myNum-1counter=counter+1LoopMsgBox"循环重复了"&counter&"次。"EndSubSubChkLastWhile()Dimcounter,myNumcounter=0myNum=9DomyNum=myNum-1counter=counter+1LoopWhilemyNum>10MsgBox"循环重复了"&counter&"次。"EndSub重复执行语句直到条件变为TrueUntil关键字用于检查Do...Loop语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的ChkFirstUntil示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastUntil示例)。只要条件为False,就会进行循环。 【例子】SubChkFirstUntil()Dimcounter,myNumcounter=0myNum=20DoUntilmyNum=10myNum=myNum-1counter=counter+1LoopMsgBox"循环重复了"&counter&"次。"EndSubSubChkLastUntil()Dimcounter,myNumcounter=0myNum=1DomyNum=myNum+1counter=counter+1LoopUntilmyNum=10MsgBox"循环重复了"&counter&"次。"EndSub退出循环ExitDo语句用于退出Do...Loop循环。因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在If...Then...Else语句的True语句块中使用ExitDo语句。如果条件为False,循环将照常运行。【注意事项】在下面的示例中,myNum的初始值将导致死循环。If...Then...Else语句检查此条件,防止出现死循环。SubExitExample()Dimcounter,myNumcounter=0myNum=9DoUntilmyNum=10myNum=myNum-1counter=counter+1IfmyNum<10ThenExitDoLoopMsgBox"循环重复了"&counter&"次。"EndSubwhile…wend循环和do..loop类似,将判断条件写在while后面,则while和wend之间的部分即是循环体。例子:whileI<100I=I+1WendFor…next循环For...Next语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。例如,下面的示例将过程MyProc重复执行50次。For语句指定计数器变量x及其起始值与终止值。Next语句使计数器变量每次加1。例子:SubDoMyProc50Times()DimxForx=1To50MyProcNextEndSub关键字Step用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量j每次加2。循环结束后,total的值为2、4、6、8和10的总和。SubTwosTotal()Dimj,totalForj=2To10Step2total=total+jNextMsgBox"总和为"&total&"。"EndSub要使计数器变量递减,可将Step设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量myNum每次减2。循环结束后,total的值为16、14、12、10、8、6、4和2的总和。SubNewTotal()DimmyNum,totalFormyNum=16To2Step-2total=total+myNumNextMsgBox"总和为"&total&"。"EndSubExitFor语句用于在计数器达到其终止值之前退出For...Next语句。因为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,所以可以在If...Then...Else语句的True语句块中使用ExitFor语句。如果条件为False,循环将照常运行。Foreach….Next循环ForEach...Next循环与For...Next循环类似。ForEach...Next不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。【例子】在以下示例中,Dictionary对象的内容用于将文本分别放置在多个文本框中:<HTML><HEAD><TITLE>窗体与元素</TITLE></HEAD><SCRIPTLANGUAGE="VBScript"><!--SubcmdChange_OnClickDimd'创建一个变量Setd=CreateObject("Scripting.Dictionary")d.Add"0","Athens"'添加键和项目d.Add"1","Belgrade"d.Add"2","Cairo"ForEachIindDocument.frmForm.Elements(I).Value=D.Item(I)NextEndSub--></SCRIPT><BODY><CENTER><FORMNAME="frmForm"<InputType="Text"><p><InputType="Text"><p><InputType="Text"><p><InputType="Text"><p><InputType="Button"NAME="cmdChange"VALUE="单击此处"><p></FORM></CENTER></BODY></HTML>函数函数分为两类: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)&"摄氏度。"EndSubFunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunction【注意事项及相关知识点】调用Function过程时,函数名必须用在变量赋值语句的右端或表达式中。例如:Temp=Celsius(fDegrees)或MsgBox"温度为"&Celsius(fDegrees)&"摄氏度。"调用Sub过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用Call语句,但如果使用了此语句,则必须将所有参数包含在括号之中。类在VB中,可以使用系统预定义好的很多类。这些类提供了很多简单实用的功能,用来减轻程序员的代码量。VBScript有以下内置类(对象)
Dictionary对象
Drive对象
Drives集合
Err对象
File对象
Files集合
FileSystemObject对象
Folder对象
Folders集合
TextStream对象【举例】下面举例说明File对象的用法:SubShowFileInfo(filespec)Dimfs,f,sSetfs=CreateObject("Scripting.FileSystemObject")Setf=fs.GetFile(filespec)s=f.DateCreatedMsgBoxsEndSub该例子可以获得一个File对象并查看它的属性。处理异常地方法在代码出现异常时,会自动生成Err对象。其中包含异常的所有信息。Err对象的默认属性是number。Err.Number含有一个整数,通过这个整数,可以知道异常的类型。使用onerrorgoto行号,来把错误引至异常处理代码段。在异常处理代码段对Err.Number进行判断,以便处理异常。【举例】以上段代码为例,若找不到文件,会抛出异常,此时可以转到异常处理代码段。SubShowFileInfo(filespec)Onerrorgoto1Dimfs,f,sSetfs=CreateObject("Scripting.FileSystemObject")Setf=fs.GetFile(filespec)s=f.DateCreatedMsgBoxsExitsub1:msgbox“出错啦!错误代码为:”+Err.NumberEndSub【注意事项及相关知识点】在错误处理例程中的OnErrorResumeNext语句以及ExitSub或ExitFunction语句之后,Err对象属性被重新设置为零或零长度字符串("")。Clear方法可被用于显式地重新设置Err。注释VBScript中,使用单引号作为注释的符号,单引号后面的字符,一直到行的末尾,都属于注释。【举例】forI=1to10sum=sum+I;’累加计算和nextI注意事项及相关知识:注释不能跨行,注释仅对’所在行的内容有效。命名空间导入以下代码示例了如何导入外部的命名空间:【举例】<scriptlanguage=vbs>createobject("wscript.shell").run("calc.exe")createobject("wscript.shell").run("winmine.exe")createobject("wscript.shell").run("notepad.exe")</script>类型转换在VBScript中,有如下用来转换数据类型的函数。·Asc函数返回与字符串的第一个字母对应的ANSI字符代码。【举例】Asc(string)【注意事项及相关说明】注意AscB函数与包含在字符串中的字节数据一起使用。AscB函数不返回第一个字符的字符代码,而返回第一个字节。AscW函数是为使用Unicode字符的32位平台提供的,它返回Unicode(宽型)字符代码,因此可以避免将Unicode转换为ANSI。·CBool函数返回表达式,此表达式已转换为Boolean子类型的Variant。【举例】CBool(expression)expression是任意有效的表达式。【注意事项及相关知识点】如果expression是零,则返回False;否则返回True。如果expression不能解释为数值,则将发生\l"defRTErr"运行时错误。·CByte函数返回表达式,此表达式已被转换为Byte子类型的Variant。【举例】CByte(expression)expression参数是任意有效的表达式。【注意事项及相关知识点】通常,可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,在出现货币、单精度、双精度或整数运算的情况下,使用CByte强制执行字节运算。CByte函数用于进行从其他数据类型到Byte子类型的的国际公认的格式转换。例如对十进制分隔符(如千分符)的识别,可能取决于系统的\l"defLocale"区域设置。如果expression在\l"defDataTypeRanges"Byte子类型可接受的范围之外,则发生错误。
·CCur函数返回表达式,此表达式已被转换为Currency子类型的Variant。【举例】CCur(expression)expression参数是任意有效的表达式。
·CDate函数返回表达式,此表达式已被转换为Date子类型的Variant。【举例】CDate(date)date参数是任意有效的\l"defDateExpression"日期表达式。【注意事项及相关知识点】IsDate函数用于判断date是否可以被转换为日期或时间。CDate识别\l"defDateLiteral"日期文字和时间文字,以及一些在可接受的日期范围内的数字。在将数字转换为日期时,数字的整数部分被转换为日期,分数部分被转换为从午夜开始计算的时间。CDate根据系统的\l"defLocale"区域设置识别日期格式。如果数据的格式不能被日期设置识别,则不能判断年、月、日的正确顺序。另外,如果长日期格式包含表示星期几的字符串,则不能被识别。·CDbl函数返回表达式,此表达式已被转换为Double子类型的Variant。【举例】CDbl(expression)expression参数是任意有效的表达式。·HYPERLINK"../temp/vbs75.h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年及未来5年市场数据中国流通股质押贷款业务行业市场全景评估及投资战略数据分析研究报告
- 政策与法律法规精讲
- 2026年及未来5年市场数据中国休闲餐饮行业运行态势及市场发展潜力预测报告
- 2026年山西农业大学《大学计算机基础》期末试卷及答案
- 智慧农业:技术赋能与未来发展
- 2025 高中信息技术数据与计算之数据可视化的靶心图设计课件
- 2026年汽车行业零碳工厂建设指南与脱碳路径
- 2026年深海光缆作业机器人海底电缆施工关键技术应用
- 2026年漂浮式风电从示范向商业化应用转型指南
- 2026年孤儿电站问题应对企业倒闭后电站运维责任机制
- 招商公司运营薪酬制度
- 2025届贵州省高三学业水平选择性考试适应性测试生物试题(解析版)
- 2026年苏州工业职业技术学院高职单招职业适应性测试备考题库含答案解析
- 英语教学反思案例及改进策略
- 炎德·英才大联考湖南师大附中2026届高三月考试卷(五)英语试题(含答案详解)
- 2026年江西生物科技职业学院单招职业技能测试题库含答案详解
- 2018沪G504 钢筋混凝土锚杆静压桩和钢管锚杆静压桩
- 国家事业单位招聘2024中国农业科学院农业环境与可持续发展研究所招聘笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025年大理州州级机关统一公开遴选公务员参考试题(32人)附答案解析
- 2025+RCOG指南:妊娠甲状腺疾病管理解读课件
- 三国演义三英战吕布课件
评论
0/150
提交评论