为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > [vb从入门到精通]VB脚本从入门到精通

[vb从入门到精通]VB脚本从入门到精通

2017-10-06 32页 doc 65KB 813阅读

用户头像

is_314871

暂无简介

举报
[vb从入门到精通]VB脚本从入门到精通[vb从入门到精通]VB脚本从入门到精通 [vb从入门到精通]VB脚本从入门到精通 篇一 : VB脚本从入门到精通 什么是 VBScript, Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 Microsoft Internet Information Service 中的 Web 服务器脚本。脚本与宿主应用...
[vb从入门到精通]VB脚本从入门到精通
[vb从入门到精通]VB脚本从入门到精通 [vb从入门到精通]VB脚本从入门到精通 篇一 : VB脚本从入门到精通 什么是 VBScript, Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 Microsoft Internet Information Service 中的 Web 服务器脚本。脚本与宿主应用程序对话。使用 ActiveX Script,浏览器和其他宿主应用程序不再需要每个脚本部件的特殊集成代码。ActiveX脚本使宿主可以编译 Script、获取和调用入口点及管理开发者可用的命名空间。通过 ActiveX Script,语言厂商可以建立标准脚本运行时语言。Microsoft 将提供 VBScript 的运行时支持。Microsoft 正在与多个 Internet 组一起定义 ActiveX脚本标准以使脚本引擎可以互换。ActiveX脚本可用在 Microsoft Internet Explorer 和 Microsoft Internet Information Service 中。 其他应用程序和浏览器中的 VBScript 作为开发者,您可以在您的产品中免费使用 VBScript 源实现程序。Microsoft 为 32 位 Windows API、16 位 Windows API 和 Macintosh 提供 VBscript 的二进制实现程序。VBScript 与 World Wide Web 浏览器集成在一起。VBScript 和 ActiveX脚本也可以在其 他应用程序中作为普通脚本语言使用。 在 HTML 页面中添加 VBScript 代码 SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中。 标记 VBScript 代码写在成对的 标记之间。例如,以下代码为一个测试传递日期的过程: Function CanDeliver CanDeliver = - Now) > 2 End Function --> 代码的开始和结束部分都有 标记。[)LANGUAGE 属性用于指定所使用的脚本语言。由于浏览器能够使用多种脚本语言,所以必须在此指定所使用的脚本语言。注意 CanDeliver 函数被嵌入在注释标记中。这样能够避免不能识别 标记的浏览器将代码显示在页面中。 因为以上示例是一个通用函数,所以可以将其包含在页面的 HEAD 部分: 订购 Function CanDeliver CanDeliver = - Now) > 2 End Function --> ... SCRIPT 块可以出现在 HTML 页面的任何地方。然而最好将所有的一般目标脚本代码放在 HEAD 部分中,以使所有脚本代码集中放置。这样可以确保在 BODY 部分调用代码之前所有脚本代码都被读取并解码。 上述的一个值得注意的例外情况是,在窗体中提供内部代码以响应窗体中对象的事件。例如,以下示例在窗体中嵌入脚本代码以响应窗体中按钮的单击事件: 测试按钮事件 MsgBox “按钮被单击~” 大多数脚本代码在 Sub 或 Function 过程中,仅在其他代码要调用它时执行。[)然而,也可以将 VBScript 代码放在过程之外、SCRIPT 块之中。这类代码仅在 HTML 页面加载时执行一次。这样就可以在加载 Web 页面时初始化数据或动态地改变页面的外观。 VBScript 数据类型 VBScript 只有一种数据类型,称为 Variant。Variant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为 Variant 是 VBScript 中唯一的数据类型,所以它也是 VBScript 中所有函数的返回值的数据类型。 最简单的 Variant 可以包含数字或字符串信息。Variant 用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理。这就是说,如果使用看起来象是数字的数据,则 VBScript 会假定其为数字并以适用于数字的方式处理。与此类似,如果使用的数据只可能是字符串,则 VBScript 将按字符串处理。也可以将数字包含在引号 中使其成为字符串。 Variant 子类型 除简单数字或字符串以外,Variant 可以进一步区分数值信息的特定含义。例如使用数值信息示日期或时间。此类数据在与其他日期或时间数据一起使用时,结果也总是表示为日期或时间。从 Boolean 值到浮点数,数值信息是多种多样的。Variant 包含的数值信息类型称为子类型。大多数情况下,可将所需的数据放进 Variant 中,而 Variant 也会按照最适用于其包含的数据的方式进行操作。 下表显示 Variant 包含的数据子类型: 您可以使用转换函数来转换数据的子类型。 在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。 也可以声明动态数组,即在运行脚本时大小发生变化的数组。[)对数组的最初声明使用 Dim 语句或 ReDim 语句。但是对于动态数组,括号中不包含任何数字。例如: Dim MyArray ReDim AnotherArray 要使用动态数组,必须随后使用 ReDim 确定维数和每一维的大小。在下例中,ReDim 将动态数组的初始大小设置为 25,而后面的 ReDim 语句将数组的大小重新调整为 30,同时使用 Preserve 关键字在重新调整大小时保留数组的。 ReDim MyArray . . . ReDim Preserve MyArray 重新调整动态数组大小的次数是没有任何限制的,将数组的大小调小时,将会丢失被删除元素的数据。 VBScript 常数 常数是具有一定含义的名称,用于代替数字或字符串,其值从不改变。VBScript 定义了许多内部常数。详细信息,请参阅 VBScript 语言参考。 创建常数 您可以使用 Const 语句在 VBScript 中创建用户自定义常数。使用 Const 语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如: Const MyString = “这是一个字符串。” Const MyAge = 49 请注意字符串文字包含在两个引号 之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号 之间。例如: Const CutoffDate = #6-1-97# 最好采用一个命名以区分常数和变量。这样可以避免在运行脚本时对常数重新赋值。例如,可以使用“vb”或“con”作常数名的前缀,或将常数名的所有字母大写。将常数和变量区分开可以在开发复杂的脚本时避免混乱。 VBScript 运算符 VBScript 有一套完整的运算符,包括算术运算符、比较运算符、 连接运算符和逻辑运算符。 运算符优先级 当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。 当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符的优先级如下所示: 使用条件语句 控制程序执行 使用条件语句和循环语句可以控制脚本的流程。使用条件语句可以编写进行判断和重复操作的 VBScript 代码。在 VBScript 中可使用以下条件语句: 扩展:vb脚本 / vbs脚本从入门到精通 / vb从入门到精通 pdf ? ? If...Then...Else 语句 语句 使用 If...Then...Else 进行判断 If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句。,,通常,条件是使用比较运算符 对值或变量进行比较的表达式。有关比较运算符的详细信息,请参阅比较运算符。If...Then...Else 语句可以按照需要进行嵌套。 条件为 True 时运行语句 要在条件为 True 时运行单行语句,可使用 If...Then...Else 语句的单行语法。下例示范了单行语法。请注意此例省略了关键字 Else。 Sub FixDate Dim myDate myDate = #2/13/95# If myDate End Sub 要运行多行代码,必须使用多行语法。多行语法包含 End If 语句,如下所示: Sub AlertUser If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True End If End Sub 条件为 True 和 False 时分别运行某些语句 可以使用 If...Then...Else 语句定义两个可执行语句块:条件为 True 时运行某一语句块,条件为 False 时运行另一语句块。 Sub AlertUser If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True Else AlertLabel.Forecolor = vbBlack AlertLabel.Font.Bold = False AlertLabel.Font.Italic = False End If End Sub 对多个条件进行判断 If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加 ElseIf 子句以扩充 If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。[)例如: Sub ReportValue If value = 0 Then MsgBox value ElseIf value = 1 Then MsgBox value ElseIf value = 2 then Msgbox value Else Msgbox “数值超出范围~” End If 可以添加任意多个 ElseIf 子句以提供多种选择。使用多个 ElseIf 子句经常会变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case 语句。 使用 Select Case 进行判断 Select Case 结构提供了 If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case 语句提供的功能与 If...Then...Else 语句类似,但是可以使代码更加简练易读。 Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case 的值比较。如果匹配,则执行与该 Case 关联的语句块,示例代码如下: Select Case Document.Form1.CardType.Options.Text Case “MasterCard” DisplayMCLogo ValidateMCAccount Case “Visa” DisplayVisaLogo ValidateVisaAccount Case “American Express” DisplayAMEXCOLogo ValidateAMEXCOAccount Case Else DisplayUnknownImage PromptAgain End Select 请注意 Select Case 结构只计算开始处的一个表达式,而 If...Then...ElseIf 结构计算每个 ElseIf 语句的表达式,这些表达式可以各不相同。 仅当每个 ElseIf 语句计算的表达式都相同时,才可以使用 Select Case 结构代替 If...Then...ElseIf 结构。 Dim counter, myNum counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox “循环重复了 “ & counter & “ 次。” End Sub Sub ChkLastWhile Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10 MsgBox “循环重复了 “ & counter & “ 次。[)” End Sub 重复执行语句直到条件变为 True Until 关键字用于检查 Do...Loop 语句中的条件。有两种方式检查条件:在进入循环之前检查条件;或者在循环至少运行完一次之后检查条件。只要条件为 False,就会进行循环。 Sub ChkFirstUntil Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 扩展:vb脚本 / vbs脚本从入门到精通 / vb从入门到精通 pdf counter = counter + 1 Loop MsgBox “循环重复了 “ & counter & “ 次。” End Sub Sub ChkLastUntil Dim counter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox “循环重复了 “ & counter & “ 次。” End Sub 退出循环 Exit Do 语句用于退出 Do...Loop 循环。因为通常只是在某些特殊情况下要退出循环,所以可在 If...Then...Else 语句的 True 语句块中使用 Exit Do 语句。如果条件为 False,循环将照常运行。 在下面的示例中,myNum 的初始值将导致死循环。If...Then...Else 语句检查此条件,防止出现死循环。 Sub ExitExample Dim counter, myNum counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum Loop MsgBox “循环重复了 “ & counter & “ 次。 Dim x For x = 1 To 50 MyProc Next End Sub 关键字 Step 用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量 j 每次加 2。循环结束后,total 的值为 2、4、6、8 和 10 的总和。 Sub TwosTotal Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox “总和为 “ & total & “。” End Sub 要使计数器变量递减,可将 Step 设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量 myNum 每次减 2。循环结束后,total 的值为 16、14、12、10、8、6、4 和 2 的总和。 Sub NewTotal Dim myNum, total For myNum = 16 To 2 Step -2 total = total + myNum Next MsgBox “总和为 “ & total & “。[)” End Sub Exit For 语句用于在计数器达到其终止值之前退出 For...Next 语句。因为通常只是在某些特殊情况下要退出循环,所以可以在 If...Then...Else 语句的 True 语句块中使用 Exit For 语句。如果条件为 False,循环将照常运行。 使用 For Each...Next For Each...Next 循环与 For...Next 循环类似。For Each...Next 不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。 在以下示例中,Dictionary 对象的内容用于将文本分别放置在多个文本框中: 窗体与元素 Sub cmdChange_OnClick Dim d „创建一个变量 Set d = CreateObject d.Add “0”, “Athens” „添加键和项目 d.Add “1”, “Belgrade” d.Add “2”, “Cairo” For Each I in d Document.frmForm.Elements.Value = D.Item Next End Sub --> VBScript 过程 在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程。,, Sub 过程 Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 。 下面的 Sub 过程使用两个固有的VBScript 函数,即 MsgBox 和 InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用 VBScript 创建的 Function 过程完成。此过程在以下讨论之后演示。 Sub ConvertTemp temp = InputBox MsgBox “温度为 “ & Celsius & “ 摄氏度。” End Sub Function 过程 Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程可以使用参数。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。 在下面的示例中,Celsius 函数将华氏度换算为摄氏度。Sub 过程 ConvertTemp 调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。 Sub ConvertTemp 扩展:vb脚本 / vbs脚本从入门到精通 / vb从入门到精通 pdf temp = InputBox MsgBox “温度为 “ & Celsius & “ 摄氏度。” End Sub Function Celsius Celsius = * 5 / 9 End Function 过程的数据进出 给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用 Sub 语句或 Function 语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees 是传递给 Celsius 函数的值的占位符: Function Celsius Celsius = * 5 / 9 End Function 要从过程获取数据,必须使用 Function 过程。[)请记住,Function 过程可以返回值;Sub 过程不返回值。 在代码中使用 Sub 和 Function 过程 调用 Function 过程时,函数名必须用在变量赋值语句的右端或表达式中。例如: Temp = Celsius 或 MsgBox “温度为 “ & Celsius & “ 摄氏度。” 调用 Sub 过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用 Call 语句,但如果使用了此语句,则必须将所有参数包含在括号之中。 下面的示例显示了调用 MyProc 过程的两种方式。一种使用 Call 语句;另一种则不使用。两种方式效果相同。 Call MyProc MyProc firstarg, secondarg 请注意当不使用 Call 语句进行调用时,括号被省略。 VBScript编码约定 编码约定是帮助您使用 Microsoft Visual Basic Scripting Edition 编写代码的一些建议。编码约定包含以下内容: 对象、变量和过程的命名约定 ? 注释约定 ? 文本格式和缩进指南 ? 使用一致的编码约定的主要原因是使脚本或脚本集的结构和编码样式标准化,这样代码易于阅读和理解。使用好的编码约定可以使源代码明白、易读、准确,更加直观且与其他语言约定保持一致。 常数命名约定 VBScript 的早期版本不允许创建用户自定义常数。如果要使用常数,则常数以变量的方式实现,且全部字母大写以和其他变量区分。常数名中的多个单词用下划线 分隔。例如: USER_LIST_MAX NEW_LINE 这种标识常数的方法依旧可行,但您还可以选择其他方案,用 Const 语句创建真正的常数。: 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 , strTargetUser) Dim i „ Loop counter. Dim blnFound „ Target found flag intFindUser = -1 i = 0 „ Initialize loop counter Do While i 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 VBScript 语句 Call 语句 将控制权传递给 Sub 或 Function 过程。 [Call] name [argumentlist] 参数 Call 可选项关键字。如果指定此关键字,则必须用括号把 argumentlist 括起来。例如: Call MyProc name 必选项。要调用的过程名。 argumentlist 可选项。传递给过程的变量、数组或表达式列表,用逗号分隔每一项。 说明 在调用过程时,不必使用 Call 关键字。然而,如果使用 Call 关键字调用要求参数的过程,则必须用括号将 argumentlist 括起来。如果省略 Call 关键字,那么必须也同时省略 argumentlist 参数两边的括号。使用 Call 语法调用内部函数或使用用户自定义函数,函数返回值都会被放弃。 Call MyFunction Function MyFunction MsgBox text End Function Class 语句 声明一个类的名称,以及组成该类的变量、属性和方法的定义。将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。 类的缺省属性和方法是在它们的声明部分用 Default 关键字指定的。关于如何使用该关键字,请参考单独的声明语句主题。 Const 语句 声明用于代替文字值的常数。 [Public | Private] Const constname = expression 参数 Public 可选项。该关键字用于在 Script 级中声明可用于所有脚本中所有过程的常数。不允许在过程中使用。 Private 可选项。中定义 Function 过程。 使用 Exit Function 语句可以从 Function 过程中立即退出。程序继续执行调用 Function 过程的语句之后的语句。可在 Function 过程的任何位置出现任意个 Exit Function 语句。 与 Sub 过程类似,Function 过程是可以获取参数、执行一系列语句并改变其参数值的独立过程。与 Sub 过程的不同之处是:当要使用由函数返回的值时,可以在 表达式的右边使用 Function 过程,这与内部函数的使用方式一样,例如 Sqr、Cos 或 Chr。 在表 达式中,可以通过使用函数名,并在其后用圆括号给出相应的参数列表来调用 Function 过程。有关调用 Function 过程的详细信息,请参阅 Call 语句。 小心 Function 过程可以是递归的,即该过程可以调用自身以完成某个给定的任务。但是,递归可能会导致堆栈溢出。 要从函数返回一个值,只需将值赋给函数名。在过程的任意位置都可以出现任意个这样的赋值。如果没有给 name 赋值, 则过程将返回一个默认值:数值函数返回 0,字符串函数返回零长度字符串 。如果在 Function 中没有对象引用被指定给 name,则返回对象引用的函数将返回 Nothing。 下面的样例说明如何给一个名为 BinarySearch 的函数赋返回值。在此样例中,将 False 赋给了该函数名,表示没有找到某个值。 Function BinarySearch . . . „ 未找到该值。返回 False 值。 If lower > upper Then BinarySearch = False Exit Function End If . . . End Function 在 Function 过程中使用的变量分为两类:一类是在过程内显 式声明的,另一类则不是。[,在过程内显式声明的变量总是过程的局部变量。被使用但没有在过程中显式声明的变量也是局部变量,除非在该过程外更高级别的位置显式声明它们。 小心 Function 过程可以是递归的,即该过程可以调用自身以完成某个给定的任务。但是,递归可能会导致堆栈溢出。 小心 VBScript 可能会重新排列数学表达式以提高内部效率。当 Function 过程修改数学表达式中变量的值时,应避免在同一表达式中使用该函数。 要求 版本 1 请参阅 Call 语句 | Dim 语句 | Exit 语句 | Nothing | Set 语句 | Sub 语句 ReDim 语句 在过程级中声明动态数组变量并分配或重新分配存储空间。 ReDim [Preserve] varname [, varname] . . . 参数 Preserve 当更改现有数组最后一维的大小时保留数据。 varname 变量名,遵循标准变量命名约定。 subscripts 数组变量的维数,最多可以声明 60 维数组。subscripts 参数语法格式如下: upper [,upper] . . . 数组的下界总是零。 . . . ReDim Preserve X 小心 如果减小数组的大小,则将丢失被排除的元素中的数据。 变量初始化时,数值变量初始化为 0,字符串变量初始化为零长度字符串 。在使用引用对象的变量前,必须使用 Set 语句将某个现有对象赋予该变量。在进行对象赋值以前,已声明的对象变量有特定值 Nothing。 扩展:vb脚本 / vbs脚本从入门到精通 / vb从入门到精通 pdf 要求 版本 1 请参阅 Dim 语句 | Set 语句 Set 语句 将对象引用赋给一个variable或property,或者将对象引用与事件关联。 Set objectvar = {objectexpression | New classname | Nothing} -或者- Set object.eventname = GetRef 参数 objectvar 必选项,变量或属性名称;符合标准变量命名约定。中定义 Sub 过程。 使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。 与 Function 过程相似之处是:Sub 过程是一个可以获取参数,执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是:Function 过程可以返回值,而 Sub 过程不能用于表达式中。 可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息,请参阅 Call 语句。 小心 Sub 过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出。 在 Sub 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量总是局部变量。对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。 小心 过程可以使用没有在过程内显式声明的变量,但只要有任何 script 级定义的名称与之同名,就会产生名称冲突。如果过程 中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是脚本级的名称。要避免这类冲突,请使用 Option Explicit 语句可强制显式声明变量。 要求 版本 1 请参阅 Call 语句 | Dim 语句 | Exit 语句 | Function 语句 扩展:vb脚本 / vbs脚本从入门到精通 / vb从入门到精通 pdf 篇二 : VB脚本从入门到精通 什么是 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 语言进行程序设计。虽然您可以从本教程的几个 Web 页面中学习 VBscript,但是本教程并没有告诉您如何编程。要学习编程,请阅读由 Microsoft Press 出版的《Step by Step》。 ActiveX 脚本 VBScript 使用 ActiveX脚本与宿主应用程序对话。使用 ActiveX Script,浏览器和其他宿主应用程序不再需要每个脚本部件的特殊集成代码。ActiveX脚本使宿主可以编译 Script、获取和调用入口点及管理开发者可用的命名空间。通过 ActiveX Script,语言厂商可以建立标准脚本运行时语言。Microsoft 将提供 VBScript 的运行时支持。Microsoft 正在与多个 Internet 组一起定义 ActiveX脚本标准以使脚本引擎可以互换。ActiveX脚本可用在 Microsoft Internet Explorer 和 Microsoft Internet Information Service 中。 其他应用程序和浏览器中的 VBScript 作为开发者,您可以在您的产品中免费使用 VBScript 源实现程序。Microsoft 为 32 位 Windows API、16 位 Windows API 和 Macintosh 提供 VBscript 的二进制实现程序。VBScript 与 World Wide Web 浏览器集成在一起。VBScript 和 ActiveX脚本也可以在其他应用程序中作为普通脚本语言使用。 在 HTML 页面中添加 VBScript 代码 SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中。 标记 VBScript 代码写在成对的 标记之间。例如,以下代码为一个测试传递日期的过程: Function CanDeliver CanDeliver = - Now) > 2 End Function --> 代码的开始和结束部分都有 标记。LANGUAGE 属性用于指定所使用的脚本语言。由于浏览器能够使用多种脚本语言,所以必须在此指定所使用的脚本语言。注意 CanDeliver 函数被嵌入在注释标记中。这样能够避免不能识别 标记的浏览器将代码显示在页面中。 因为以上示例是一个通用函数,所以可以将其包含在页面的 HEAD 部分: 订购 Function CanDeliver CanDeliver = - Now) > 2 End Function --> ... SCRIPT 块可以出现在 HTML 页面的任何地方。然而最好将 所有的一般目标脚本代码放在 HEAD 部分中,以使所有脚本代码集中放置。这样可以确保在 BODY 部分调用代码之前所有脚本代码都被读取并解码。 上述规则的一个值得注意的例外情况是,在窗体中提供内部代码以响应窗体中对象的事件。例如,以下示例在窗体中嵌入脚本代码以响应窗体中按钮的单击事件: 测试按钮事件 MsgBox “按钮被单击~” 大多数脚本代码在 Sub 或 Function 过程中,仅在其他代码要调用它时执行。然而,也可以将 VBScript 代码放在过程之外、SCRIPT 块之中。这类代码仅在 HTML 页面加载时执行一次。这样就可以在加载 Web 页面时初始化数据或动态地改变页面的外观。 VBScript 数据类型 VBScript 只有一种数据类型,称为 Variant。Variant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为 Variant 是 VBScript 中唯一的数据类型,所以它也是 VBScript 中所有函数的返回值的数据类型。 最简单的 Variant 可以包含数字或字符串信息。Variant 用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理。这就是说,如果使用看起来象是数字的数据,则 VBScript 会假定其为数字并以适用于数字的方式处理。与此类似,如果使用的数据只可能是字符串,则 VBScript 将按字符串处理。也可以将数字包含在引号 中使其成为字符串。 Variant 子类型 除简单数字或字符串以外,Variant 可以进一步区分数值信息的特定含义。例如使用数值信息表示日期或时间。此类数据在与其他日期或时间数据一起使用时,结果也总是表示为日期或时间。从 Boolean 值到浮点数,数值信息是多种多样的。Variant 包含的数值信息类型称为子类型。大多数情况下,可将所需的数据放进 Variant 中,而 Variant 也会按照最适用于其包含的数据的方式进行操作。 下表显示 Variant 包含的数据子类型: 您可以使用转换函数来转换数据的子类型。另外,可使用 VarType函数返回数据的 Variant 子类型。 VBScript 变量 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储脚本运行时可更改的程序信息。例如,可以创建一个名为 ClickCount 的变量来存储用户单击 Web 页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。在 VBScript 中只有一个基本数据类型,即 Variant,因此所有变量的数据类型都是 Variant。 声明变量 声明变量的一种方式是使用 Dim 语句、Public 语句和 Private 语句在脚本中显式声明变量。例如: Dim DegreesFahrenheit 声明多个变量时,使用逗号分隔变量。例如: Dim Top, Bottom, Left, Right 另一种方式是通过直接在脚本中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。因此,最好使用 Option Explicit 语句显式声明所有变量,并将其作为脚本的第一条语句。 命名规则 变量命名必须遵循 VBScript 的标准命名规则。变量命名必须遵循: 第一个字符必须是字母。 ? 不能包含嵌入的句点。 ? 长度不能超过 255 个字符。 ? 在被声明的作用域内必须唯一。 ? 变量的作用域与存活期 变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为 Script 级变量,具有脚本级作用域。 变量存在的时间称为存活期。Script 级变量的存活期从被声明的一刻起,直到脚本运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。 给变量赋值 创建如下形式的表达式给变量赋值:变量在表达式左边,要赋的值在表达式右边。例如: B = 200 标量变量和数组变量 多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后 面带有括号 。下例声明了一个包含 11 个元素的一维数组: Dim A 虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。 在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: A = 256 A = 324 A = 100 . . . A = 55 与此类似,使用索引可以检索到所需的数组元素的数据。例如: . . . SomeVariable = A . . . 数组并不仅限于一维。数组的维数最大可以为 60。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: Dim MyTable 在二维数组中,括号中第一个数字表示行的数目,第二个数字 表示列的数目。 也可以声明动态数组,即在运行脚本时大小发生变化的数组。对数组的最初声明使用 Dim 语句或 ReDim 语句。但是对于动态数组,括号中不包含任何数字。例如: Dim MyArray ReDim AnotherArray 要使用动态数组,必须随后使用 ReDim 确定维数和每一维的大小。在下例中,ReDim 将动态数组的初始大小设置为 25,而后面的 ReDim 语句将数组的大小重新调整为 30,同时使用 Preserve 关键字在重新调整大小时保留数组的内容。 ReDim MyArray . . . ReDim Preserve MyArray 重新调整动态数组大小的次数是没有任何限制的,将数组的大小调小时,将会丢失被删除元素的数据。 VBScript 常数 常数是具有一定含义的名称,用于代替数字或字符串,其值从不改变。VBScript 定义了许多内部常数。详细信息,请参阅 VBScript 语言参考。 创建常数 您可以使用 Const 语句在 VBScript 中创建用户自定义常数。使用 Const 语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如: Const MyString = “这是一个字符串。” Const MyAge = 49 请注意字符串文字包含在两个引号 之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号 之间。例如: Const CutoffDate = #6-1-97# 最好采用一个命名方案以区分常数和变量。这样可以避免在运行脚本时对常数重新赋值。例如,可以使用“vb”或“con”作常数名的前缀,或将常数名的所有字母大写。将常数和变量区分开可以在开发复杂的脚本时避免混乱。 VBScript 运算符 VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。 运算符优先级 当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。 当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符的优先级如下所示: 当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。 字符串连接 运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。Is 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。 使用条件语句 控制程序执行 使用条件语句和循环语句可以控制脚本的流程。使用条件语句可以编写进行判断和重复操作的 VBScript 代码。在 VBScript 中可使用以下条件语句: ? ? If...Then...Else 语句 语句 使用 If...Then...Else 进行判断 If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句。通常,条件是使用比较运算符对值或变量进行比较的表达式。有关比较运算符的详细信息,请参阅比较运算符。If...Then...Else 语句可以按照需要进行嵌套。 条件为 True 时运行语句 要在条件为 True 时运行单行语句,可使用 If...Then...Else 语句的单行语法。下例示范了单行语法。请注意此例省略了关键字 Else。 Sub FixDate Dim myDate myDate = #2/13/95# If myDate End Sub 要运行多行代码,必须使用多行语法。多行语法包含 End If 语句,如下所示: Sub AlertUser If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True End If End Sub 条件为 True 和 False 时分别运行某些语句 可以使用 If...Then...Else 语句定义两个可执行语句块:条件为 True 时运行某一语句块,条件为 False 时运行另一语句块。 Sub AlertUser If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True Else AlertLabel.Forecolor = vbBlack AlertLabel.Font.Bold = False AlertLabel.Font.Italic = False End If End Sub 对多个条件进行判断 If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加 ElseIf 子句以扩充 If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。例如: Sub ReportValue If value = 0 Then MsgBox value ElseIf value = 1 Then MsgBox value ElseIf value = 2 then Msgbox value Else Msgbox “数值超出范围~” End If 可以添加任意多个 ElseIf 子句以提供多种选择。使用多个 ElseIf 子句经常会变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case 语句。 使用 Select Case 进行判断 Select Case 结构提供了 If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case 语句提供的功能与 If...Then...Else 语句类似,但是可以使代码更加简练易读。 Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case 的值比较。如果匹配,则执行与该 Case 关联的语句块,示例代码如下: Select Case Document.Form1.CardType.Options.Text Case “MasterCard” DisplayMCLogo ValidateMCAccount Case “Visa” DisplayVisaLogo ValidateVisaAccount Case “American Express” DisplayAMEXCOLogo ValidateAMEXCOAccount Case Else DisplayUnknownImage PromptAgain End Select 请注意 Select Case 结构只计算开始处的一个表达式,而 If...Then...ElseIf 结构计算每个 ElseIf 语句的表达式,这些表 达式可以各不相同。
/
本文档为【[vb从入门到精通]VB脚本从入门到精通】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索