资源描述
一、VBScript 特性
类别
关键字
数组处理
Array
返回包含数组的 Variant。
Dim A
A = Array(10,20,30)
B = A(2) ' B is now 30
Dim, Private, Public, ReDim
声明变量并分配存储空间。
Dim Names(9) '声明一个具有 10 个元素的数组。
Dim Names() ' 声明动态数组。
Dim MyVar, MyNum ' 声明两个变量。
定义私有变量并分配存储空间。在 Class块中定义私有变量。
Private MyNumber '不同的私有变量。
Private MyArray(9) '私有数组变量。
' 声明多个不同的私有变量。
Private MyNumber, MyVar, YourNumber
定义公有变量并分配存储空间。在 Class 块中定义私有变量。
Public MyNumber '不同的公有变量。
Public MyArray(9) '公有数组变量。
' 声明多个不同的公有变量。
Public MyNumber, MyVar, YourNumber
在过程级中声明动态数组变量并分配或重新分配存储空间。
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
IsArray
返回 Boolean 值指明某变量是否为数组。
Dim MyVariable
Dim MyArray(3)
MyArray(0) = "Sunday"
MyArray(1) = "Monday"
MyArray(2) = "Tuesday"
MyVariable = IsArray(MyArray) ' MyVariable 包含 "True"。
Erase
重新初始化固定大小数组的元素,并释放动态数组的存储空间。
Dim NumArray(9)
Dim DynamicArray()
ReDim DynamicArray(9) '分配存储空间。
Erase NumArray ' 每一元素都被重新初始化。
Erase DynamicArray '释放数组占用的内存。
LBound, UBound
返回指定数组维的最小可用下标。
返回指定数组维数的最大可用下标。
赋值
Set
将对象引用赋给变量或属性,或者是用一个事件关联一个过程引用。
Function ShowFreeSpace(drvPath)
Dim fso, d, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(drvPath))
s = "Drive " & UCase(drvPath) & " - "
s = s & d.VolumeName & "<BR>"
s = s & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0)
s = s & " Kbytes"
ShowFreeSpace = s
End Function
程序注释
使用 ' 或 Rem 的程序注释
包含程序中的解释性注释。
Dim MyStr1, MyStr2
MyStr1 = "Hello" : Rem 语句和注释用冒号隔开。
MyStr2 = "Goodbye" ' 这同样是注释不需要冒号。
Rem 在没有代码的行上加注释不必用冒号。
常数/文字
Empty
Empty 关键字用于指明未初始化的变量值。 此关键字与 Null 并不相同。
Nothing
Nothing 关键字用于取消某对象变量与实际对象的关联。
Set MyObject = Nothing
Null
Null 关键字用于指明变量包含的数据无效。此关键字与 Empty 并不相同。
True, False
True 关键字的值等于 -1。
False 关键字的值为零。
控制流程
Do...Loop
当条件为 True 时或条件变为 True 之前重复执行某语句块。
Do Until DefResp = vbNo
MyNum = Int (6 * Rnd + 1) ' 产生 1 到 6 之间的随机数。
DefResp = MsgBox (MyNum & " 想要另一个数吗?", vbYesNo)
Loop
Dim Check, Counter
Check = True: Counter = 0 ' 初始化变量。
Do '外层循环。
Do While Counter < 20 '内层循环。
Counter = Counter + 1 ' 增加计数器。
If Counter = 10 Then ' 如果条件为 True...
Check = False ' 将标志值设置为 False。
Exit Do ' 终止内层循环。
End If
Loop
Loop Until Check = False ' 立即终止外层循环。
For...Next
以指定次数重复执行一组语句。
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
. . .
Next
Next
Next
For Each...Next
对数组或集合中的每个元素重复执行一组语句。
Function ShowFolderList(folderspec)
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
s = s & f1.name
s = s & "<BR>"
Next
ShowFolderList = s
End Function
If...Then...Else
根据表达式的值有条件地执行一组语句。
If A > 10 Then A = A + 1 : B = B + A : C = C + B
Select Case
根据表达式的值执行几组语句之一。
Dim Color, MyVar
Sub ChangeBackground (Color)
MyVar = lcase (Color)
Select Case MyVar
Case "red" document.bgColor = "red"
Case "green" document.bgColor = "green"
Case "blue" document.bgColor = "blue"
Case Else MsgBox "选择另一种颜色"
End Select
End Sub
While...Wend
当指定的条件为 True 时,执行一系列的语句。
Dim Counter
Counter = 0 '初始化变量。
While Counter < 20 ' 测试计数器的值。
Counter = Counter + 1 ' 增加计数器。
Alert Counter
Wend ' 计数器大于 19 时终止循环。
With
对一个对象执行一系列的语句。
With MyLabel
.Height = 2000
.Width = 2000
.Caption = "这是MyLabel"
End With
转换
Abs
返回数字的绝对值。
Dim MyNumber
MyNumber = Abs(50.3 ) '返回 50.3。
MyNumber = Abs(-50.3) '返回 50.3。
Asc, AscB, AscW
返回与字符串的第一个字母对应的 ANSI 字符代码。
Dim MyNumber
MyNumber = Asc("A") '返回 65。
MyNumber = Asc("a") '返回 97。
MyNumber = Asc("Apple") '返回 65。
Chr, ChrB, ChrW
返回与指定的 ANSI 字符代码相对应的字符。
Dim MyChar
MyChar = Chr(65) '返回 A。
MyChar = Chr(97) '返回 a。
MyChar = Chr(62) '返回 >。
MyChar = Chr(37) '返回 %。
CBool, CByte
返回表达式,此表达式已转换为 Boolean 子类型的 Variant。
Dim A, B, Check
A = 5: B = 5 ' 初始化变量。
Check = CBool(A = B) '复选框设为 True 。
A = 0 '定义变量。
Check = CBool(A) '复选框设为 False 。
返回表达式,此表达式已被转换为 Byte 子类型的 Variant。
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble 是一个双精度值。
MyByte = CByte(MyDouble) ' MyByte 包含 126 。
CCur, CDate
返回表达式,此表达式已被转换为 Currency 子类型的 Variant。
Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble 是双精度的。
MyCurr = CCur(MyDouble * 2) '把 MyDouble * 2 (1086.429176) 的结果转换为
' Currency (1086.4292)。
返回表达式,此表达式已被转换为 Date 子类型的 Variant。
MyDate = "October 19, 1962" ' 定义日期。
MyShortDate = CDate(MyDate) ' 转换为日期数据类型。
MyTime = "4:35:47 PM" ' 定义时间。
MyShortTime = CDate(MyTime) ' 转换为日期数据类型。
CDbl, CInt
返回表达式,此表达式已被转换为 Double 子类型的 Variant。
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784) ' MyCurr 是 Currency 型 (234.4567)。
MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' 把结果转换为 Double 型 (19.2254576)。
返回表达式,此表达式已被转换为 Integer 子类型的 Variant。
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble 是 Double。
MyInt = CInt(MyDouble) ' MyInt 包含 2346。
CLng, CSng, CStr
返回表达式,此表达式已被转换为 Long 子类型的 Variant。
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 是双精度值。
MyLong1 = CLng(MyVal1) ' MyLong1 25427。
MyLong2 = CLng(MyVal2) ' MyLong2 包含 25428 。
返回表达式,该表达式已被转换为 Single 子类型的 Variant。
Dim MyDouble1, MyDouble2, MySingle1, MySingle2 ' MyDouble1, MyDouble2 是双精度值。
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1) ' MySingle1 包含 75.34211 。
MySingle2 = CSng(MyDouble2) ' MySingle2 包含 75.34216 。
返回表达式,该表达式已被转换为 String 子类型的 Variant。
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble 是双精度值。
MyString = CStr(MyDouble) ' MyString 包含 "437.324"。
DateSerial, DateValue
对于指定的年、月、日,返回 Date 子类型的 Variant。
Dim MyDate1, MyDate2
MyDate1 = DateSerial(1970, 1, 1) ' Returns January 1, 1970.
MyDate2 = DateSerial(1990 - 10, 8 - 2, 1 - 1) ' Returns May 31, 1980.
返回 Date 子类型的 Variant。
Dim MyDate
MyDate = DateValue("September 11, 1963") ' 返回日期。
Hex, Oct
返回表示十六进制数字值的字符串。
Dim MyHex
MyHex = Hex(5) ' 返回 5。
MyHex = Hex(10) ' 返回A。
MyHex = Hex(459) '返回 1CB。
返回表示数字八进制值的字符串。
Dim MyOct
MyOct = Oct(4) ' 返回 4。
MyOct = Oct(8) ' 返回 10。
MyOct = Oct(459) ' 返回 713。
Fix, Int
返回数字的整数部分。
MyNumber = Int(99.8) ' 返回 99。
MyNumber = Fix(99.2) ' 返回 99。
MyNumber = Int(-99.8) ' 返回 -100。
MyNumber = Fix(-99.8) '返回-99。
MyNumber = Int(-99.2) '返回 -100。
MyNumber = Fix(-99.2) '返回 -99。
返回数字的整数部分。
MyNumber = Int(99.8) ' 返回 99。
MyNumber = Fix(99.2) ' 返回 99。
MyNumber = Int(-99.8) ' 返回 -100。
MyNumber = Fix(-99.8) '返回-99。
MyNumber = Int(-99.2) '返回 -100。
MyNumber = Fix(-99.2) '返回 -99。
Sgn
返回表示数字符号的整数。
Dim MyVar1, MyVar2, MyVar3, MySign
MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0
MySign = Sgn(MyVar1) ' 返回 1。
MySign = Sgn(MyVar2) ' 返回 -1。
MySign = Sgn(MyVar3) ' 返回 0。
TimeSerial, TimeValue
返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。
Dim MyTime1
MyTime1 = TimeSerial(12 - 6, -15, 0) ' 返回 5:45:00 AM.
返回包含时间的 Date 子类型的 Variant。
Dim MyTime
MyTime = TimeValue("4:35:17 PM") ' MyTime 包含 "4:35:17 PM"。
日期/时间
Date, Time
返回当前系统日期。
Dim MyDate
MyDate = Date ' MyDate 包含当前系统日期。
返回 Date 子类型 Variant,指示当前系统时间。
Dim MyTime
MyTime = Time ' 返回当前系统时间。
DateAdd, DateDiff, DatePart
返回已添加指定时间间隔的日期。
NewDate = DateAdd("m", 1, "31-Jan-95")
返回两个日期之间的时间间隔。
Function DiffADate(theDate)
DiffADate = "从当天开始的天数:" & DateDiff("d", Now, theDate)
End Function
返回给定日期的指定部分。
Function GetQuarter(TheDate)
GetQuarter = DatePart("q", TheDate)
End Function
DateSerial, DateValue
对于指定的年、月、日,返回 Date 子类型的 Variant。
Dim MyDate1, MyDate2
MyDate1 = DateSerial(1970, 1, 1) ' Returns January 1, 1970.
MyDate2 = DateSerial(1990 - 10, 8 - 2, 1 - 1) ' Returns May 31, 1980.
返回 Date 子类型的 Variant。
Dim MyDate
MyDate = DateValue("September 11, 1963") ' 返回日期。
Day, Month, MonthName
返回 1 到 31 之间的一个整数(包括 1 和31),代表某月中的一天。
Dim MyDay
MyDay = Day("October 19, 1962") 'MyDay 包含 19。
返回 1 到 12 之间的一个整数(包括 1 和 12),代表一年中的某月。
Dim MyVar
MyVar = Month(Now) ' MyVar 包含当前月对应的数字。
返回表明指定月份的字符串。
Dim MyVar
MyVar = MonthName(10, True) ' MyVar 包含 "Oct"。
Weekday, WeekdayName, Year
返回代表一星期中某天的整数。
Dim MyDate, MyWeekDay
MyDate = #October 19, 1962# ' 分派日期。
MyWeekDay = Weekday(MyDate) ' 由于 MyWeekDay 包含 6
' MyDate 代表星期五。
返回一个字符串,表示星期中指定的某一天。
Dim MyDate
MyDate = WeekDayName(6, True) 'MyDate 包含 Fri。
返回一个代表某年的整数。
Dim MyDate, MyYear
MyDate = #October 19, 1962# '分派一日期。
MyYear = Year(MyDate) ' MyYear 包含 1962。
Hour, Minute, Second
返回 0 到 23 之间的一个整数(包括 0 和 23),代表一天中的某一小时。
Dim MyTime, MyHour
MyTime = Now
MyHour = Hour(MyTime) ' MyHour 包含代表当前时间的数值。
返回 0 到 59 之间的一个整数(包括 0 和59),代表一小时内的某一分钟。
Dim MyVar
MyVar = Minute(Now)
返回 0 到 59 之间的一个整数(包括 1 和 59),代表一分钟内的某一秒。
Dim MySec
MySec = Second(Now) 'MySec 包含代表当前秒的数字。
Now
根据计算机系统设定的日期和时间返回当前的日期和时间值。
Dim MyVar
MyVar = Now ' MyVar 包含当前的日期和时间。
TimeSerial, TimeValue
返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。
Dim MyTime1
MyTime1 = TimeSerial(12 - 6, -15, 0) ' 返回 5:45:00 AM.
返回包含时间的 Date 子类型的 Variant。
Dim MyTime
MyTime = TimeValue("4:35:17 PM") ' MyTime 包含 "4:35:17 PM"。
声明
Class
声明一个类的名称,以及组成该类的变量、属性和方法的定义。
Class name
statements
End Class
Const
声明用于代替文字值的常数。
Const MyVar = 459 ' 常数默认为 公有。
Private Const MyString = "HELP" ' 定义私有常数。
Const MyStr = "Hello", MyNumber = 3.4567 '在一行上定义多个常数。
Dim, Private, Public, ReDim
声明变量并分配存储空间。
Dim Names(9) '声明一个具有 10 个元素的数组。
Dim Names() ' 声明动态数组。
Dim MyVar, MyNum ' 声明两个变量。
定义私有变量并分配存储空间。在 Class块中定义私有变量。
Private MyNumber '不同的私有变量。
Private MyArray(9) '私有数组变量。
' 声明多个不同的私有变量。
Private MyNumber, MyVar, YourNumber
定义公有变量并分配存储空间。在 Class 块中定义私有变量。
Public MyNumber '不同的公有变量。
Public MyArray(9) '公有数组变量。
' 声明多个不同的公有变量。
Public MyNumber, MyVar, YourNumber
在过程级中声明动态数组变量并分配或重新分配存储空间。
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
Function, Sub
声明 Function 过程的名称、参数以及构成其主体的代码。
Function BinarySearch(. . .)
. . .
' 未找到该值。返回 False 值。
If lower > upper Then
BinarySearch = False
Exit Function
End If
. . .
End Function
声明 Sub 过程的名称、参数以及构成其主体的代码。
[Public [Default]| Private] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
Property Get, Property Let, Property Set
在 Class 块中,声明构成用来取得(返回)属性的值的属性过程的主体的名称、参数和代码。
在 Class 块中,声明名称、参数和代码等,它们构成了赋值(设置)属性的 Property 过程的主体。
在 Class 块中,声明名称、参数和代码,这些构成了将引用设置到对象的 Property 过程的主体。
错误处理
On Error
启动错误处理程序。
On Error Resume Next
Err.Raise 6 '产生溢出错误。
MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description)
Err.Clear '清除错误。
Err
含有关于运行时错误的信息。接受用于生成和清除运行时错误的 Raise 和 Clear 方法。
On Error Resume Next
Err.Raise 6 '产生溢出错误。
MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description)
Err.Clear '清除错误。
表达式
Eval
计算一个表达式的值并返回结果。
Sub GuessANumber
Dim Guess, RndNum
RndNum = Int((100) * Rnd(1) + 1)
Guess = CInt(InputBox("Enter your guess:",,0))
Do
If Eval("Guess = RndNum") Then
MsgBox "祝贺你!猜对了!"
Exit Sub
Else
Guess = CInt(InputBox("对不起,请再试一次",,0))
End If
Loop Until Guess = 0
End Sub
Execute
执行一个或多个指定的语句。
Dim X ' 在全局作用域中声明 X。
X = "Global" ' 将全局的 X 赋值。
Sub Proc1 ' 声明过程。
Dim X ' 在局部作用域中声明 X。
X = "Local" ' 对局部的 X 赋值。
' 此处的 Execute 语句建立了一个过程,
' 在调用该过程时它将打印 X。
' 它打印的将是全局 X,因为 Proc2
' 继承了全局作用域中的一切。
Execute "Sub Proc2: Print X: End Sub"
Print Eval("X") ' 打印本地 X。
Proc2 ' 在 Proc1 的作用域中调用 Proc2。
End Sub
Proc2 ' 本行将导致一个错误,因为
' Proc2 在 Proc1 之外是不可使用的。
Proc1 ' 调用 Proc1。
Execute "Sub Proc2: Print X: End Sub"
Proc2 ' 这句话可以成功,因为 Proc2
' 现在是全局可用的。
RegExp
提供简单的正则表达式支持功能。
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分字符大小写。
regEx.Global = True ' 设置全局可用性。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match in Matches ' 遍历匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
Replace
替换在正则表达式查找中找到的文本。
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立变量。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。
End Function
MsgBox(ReplaceTest("fox", "cat"))
' 将 'fox' 替换为 'cat'。
Test
对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = False ' 设置是否区分大小写。
retVal = regEx.Test(strng) ' 执行搜索测试。
If retVal Then
RegExpTest = "找到一个或多个匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
格式化字符串
FormatCurrency
返回表达式,此表达式已被格式化为货币值(使用系统控制面板中定义的货币符号)。
Dim MyCurrency
MyCurrency = FormatCurrency(1000) 'MyCurrency 包含 $1000.00 。
FormatDateTime
返回表达式,此表达式已被格式化为日期或时间。
Function GetCurrentDate
'FormatDateTime 把日期型格式化为长日期型。
GetCurrentDate = FormatDateTime(Date, 1)
End Function
FormatNumber
返回表达式,此表达式已被格式化为数值。
Function FormatNumberDemo
Dim MyAngle, MySecant, MyNumber
MyAngle = 1.3 ' 用弧度定义角。
MySecant = 1 / Cos(MyAngle) ' 计算正割值。
FormatNumberDemo = FormatNumber(MySecant,4) ' 把 MySecant 格式化为带四位小数点的数。
End Function
FormatPercent
返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。
Dim MyPercent
MyPercent = FormatPercent(2/32) 'MyPercent 包含 6.25%。
输入/输出
InputBox
在对话框中显示提示,等待用户输入文本或单击按钮,并返回文本框内容。
Dim Input
Input = InputBox("输入名字")
MsgBox ("输入: " & Input)
LoadPicture
返回图片对象。
LoadPicture(picturename)
MsgBox
在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮。
Dim MyVar
MyVar = MsgBox ("Hello World!", 65, "MsgBox 例子") ' MyVar 包含 either 1 or 2,
'依赖于被按下的按钮。
文字
Empty
Empty 关键字用于指明未初始化的变量值。 此关键字与 Null 并不相同。
False
False 关键字的值为零。
Nothing
Nothing 关键字用于取消某对象变量与实际对象的关联。
Set MyObject = Nothing
Null
Null 关键字用于指明变量包含的数据无效。此关键字与 Empty 并不相同。
True
True 关键字的值等于 -1。
数学
Atn, Cos, Sin, Tan
返回数值的反正切值。
Dim pi
pi = 4 * Atn(1) ' 计算 pi 的值。
返回某个角的余弦值。
Dim MyAngle, MySecant
MyAngle = 1.3 ' 用弧度定义一个角。
MySecant = 1 / Cos(MyAngle) ' 计算正割。
返回某个角的正弦值。
Dim MyAngle, MyCosecant
MyAngle = 1.3 ' 用弧度定义角度。
MyCosecant = 1 / Sin(MyAngle) '计算余割。
返回某个角的正切值。
Dim MyAngle, MyCotangent
MyAngle = 1.3 ' 用弧度定义角度。
MyCotangent = 1 / Tan(MyAngle) ' 计算余切。
Exp, Log, Sqr
返回 e(自然对数的底)的幂次方。
Dim MyAngle, MyHSin ' 用弧度定义角。
MyAngle = 1.3
展开阅读全文