文档库 最新最全的文档下载
当前位置:文档库 › VB常用语句

VB常用语句

关键词: VB
语句:
1.AppActivate语句
激活一应用程序窗口。
语法
AppActivate title[, wait]
AppActivate 语句的语法具有以下几个命名参数:
部分 描述
title 必需的。字符串表达式,所要激活的应用程序窗口的标题。可以使用 Shell 函数返回的任务识别码来替换 title,以激活应用程序。
wait 可选的。Boolean值,说明在激活另一个应用程序之前调用的应用程序是否有焦点。如果为 False(缺省),那么,即使调用的应用程序
没有焦点,也直接激活指定的应用程序。如果为 True,则调用的应用程序会等到有焦点后,才激活指定的应用程序。
说明
AppActivate 语句将焦点移动到命名的应用程序或窗口,但并不影响焦点是否最大化或最小化。当用户采取行动改变焦点或将窗口关闭时,就
会将焦点从活动的应用程序窗口移动出去。可用 Shell 函数启动一个应用程序并设置窗口样式。
在决定激活哪个应用程序时,请将 title 与每一个运行中的应用程序的标题字符串进行比较。如果没有完全匹配,就激活任何这样的应用程序
,其标题字符串以 title 开头。如果以 title 命名的应用程序有很多实例,则激活任何一个实例。
2.Beep语句
通过计算机喇叭发出一个声调。
语法
Beep
说明
呼叫的频率与时间长短取决于硬件和系统软件,并随电脑不同而不同。
3.Call语句 返回
将控制权转移到一个 Sub 过程,Function 过程,或动态连接库 (DLL)过程。
语法
[Call] name [argumentlist]
Call 语句的语法具有以下几个部分:
部分 描述
Call 可选参数;关键字。如果指定了这个关键字,则 argumentlist 必须加上括号,例如:
Call MyProc(0)
name 必要参数,要调用的过程名称。
argumentlist
说明
调用一个过程时,并不一定要使用 Call 关键字。如果使用 Call 关键字来调用一个需要参数的过程,argumentlist 就必须要加上括号。如果
省略了 Call 关键字,那么也必须要省略 argumentlis 外面的括号。如果使用 Call 语法来调用内建函数或用户定义函数,则函数的返回值将
被丢弃。
若要将整个数组传给一个过程,使用数组名,然后在数组名后加上空括号。
4.ChDir语句 返回
改变当前的目录或文件夹。
语法
ChDir path
必要的 path 参数是一个字符串表达式,它指明哪个目录或文件夹将成为新的缺省目录或文件夹。path 可能

会包含驱动器。如果没有指定驱动
器,则 ChDir 在当前的驱动器上改变缺省目录或文件夹。
说明
ChDir 语句改变缺省目录位置,但不会改变缺省驱动器位置。例如,如果缺省的驱动器是 C,则下面的语句将会改变驱动器 D 上的缺省目录,
但是 C 仍然是缺省的驱动器:
ChDir "D:\TMP"
5.ChDrive语句 返回
改变当前的驱动器。
语法
ChDrive drive
必要的 drive 参数是一个字符串表达式,它指定一个存在的驱动器。如果使用零长度的字符串 (""),则当前的驱动器将不会改变。如果
drive 参数中有多个字符,则 ChDrive 只会使用首字母。
6.Close语句 返回
关闭 Open 语句所打开的输入/输出 (I/O) 文件。
语法
Close [filenumberlist]
可选的 filenumberlist参数为一个或多个文件号,其中 filenumber 为任何有效的文件号,语法如下:
[[#]filenumber] [, [#]filenumber] . . .
说明
若省略 filenumberlist,则将关闭 Open 语句打开的所有活动文件。
当关闭 Output 或 Append 打开的文件时,将属于此文件的最终输出缓冲区写入操作系统缓冲区。所有与该文件相关联的缓冲区空间都被释放

在执行 Close 语句时,文件与其文件号之间的关联将终结。
7.Const语句 返回
声明用于代替文字量的常数。
语法
[Public | Private] Const constname [As type] = expression
Const 语句的语法包含下面部分:
部分 描述
Public 可选的。该关键字用于在模块级别中声明在所有模块中对所有过程都可以使用的常数。在过程中不能使用。
Private 可选的。该关键字用于在模块级声明只能在包含该声明的模块中使用的常数。不能在过程中使用。
constname 必需的。常数的名称;遵循标准的变量命名约定。
type 可选的。常数的数据类型;可以是Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String
或 Variant。所声明的每个变量都要使用一个单独的 As 类型子句。
expression 必需的。文字,其它常数,或由除 Is 之外的任意的算术操作符和逻辑操作符所构成的任意组合。
说明
在缺省情况下常数是私有的。过程中的常数总是私有的;它们的可见性无法改变。在标准模块中,可以用 Public 关键字来改变模块级常数可
见性的缺省值。不过,在类模块中,常数只能是私有的,而且用 Public 关键字也不能改变其可见性。
为了在一行中声明若干个常数,可以使用逗号将每个常数赋值分

开。用这种方法声明常数时,如果使用了 Public 或 Private 关键字,则该关
键字对该行中所有常数都有效。
在给常量赋值的表达式中,不能使用变量,用户自定义的函数,或 Visual Basic 的内部函数(如 Chr)。
注意 常数可以使程序更具可读性,以及易于修改。在程序运行时,常数不会象变量那样无意中被改变。
如果在声明常数时没有显式地使用 As type 子句,则该常数的数据类型是最适合其表达式的数据类型。
在 Sub、Function 或 Property 过程中声明的常数都是该过程的局部常数。在过程外声明的常数,在包含该声明的模块中被定义。在可以使用
表达式的地方,都可以使用常数。
8.Date语句 返回
设置当前系统日期。
语法
Date = date
对于运行 Microsoft Windows 95 的系统,要设置的 date 必须介于 1980 年 1月 1 日与 2099 年 12 月 31 日之间。对于运行 Microsoft
Windows NT 的系统,date 必须介于公元 1980 年 1 月 1 日到 2079 年 12 月 31 日之间。
9.Declare语句 返回
用于在模块级别中声明对动态链接库 (DLL) 中外部过程的引用。
语法 1
[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]
语法 2
[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
Declare 语句的语法包含下面部分:
部分 描述
Public 可选的。用于声明对所有模块中的所有其它过程都可以使用的过程。
Private 可选的。用于声明只能在包含该声明的模块中使用的过程。
Sub 可选的(但 Sub 或 Function 二者需选其一)。表示该过程没有返回值。
Function 可选的(但 Sub 或 Function 二者需选其一)。表示该过程会返回一个可用于表达式的值。
name 必需的。任何合法的过程名。注意动态链接库的入口处(entry points)区分大小写。
Lib 必需的。指明包含所声明过程的动态链接库或代码资源。所有声明都需要 Lib 子句。
libname 必需的。包含所声明的过程动态链接库名或代码资源名。
Alias 可选的。表示将被调用的过程在动态链接库 (DLL) 中还有另外的名称。当外部过程名与某个关键字重名时,就可以使用这个参数。当动
态链接库的过程与同一范围内的公用变量、常数或任何其它过程的名称相同时,也可以使用 Alias。如果该动态链接库过程中的某个字符不符
合动态链接库的命名约定时,也可以使用 Alias。
aliasname 可选的。动态链接库或代码资源中的过程名。如果首字符不是数字符号 (#)

,则 aliasname 是动态链接库中该过程的入口处的名称
。如果首字符是 (#),则随后的字符必须指定该过程的入口处的顺序号。
arglist 可选的。代表调用该过程时需要传递的参数的变量表。
type 可选的。Function 过程返回值的数据类型;可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持
)、Date、String(只支持变长)或 Variant,用户定义类型,或对象类型。
arglist 参数的语法以及语法各个部分如下:
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]
部分 描述
Optional 可选的。表示参数不是必需的。如果使用该选项,则 arglist 中的后续参数都必需是可选的,而且必须都使用 Optional 关键字声
明。如果使用了 ParamArray,则任何参数都不能使用 Optional。
ByVal 可选的。表示该参数按值传递。
ByRef 表示该参数按地址传递。 ByRef 是 Visual Basic 的缺省选项。
ParamArray 可选的。只用于 arglist 的最后一个参数,表示最后的参数是一个 Variant 元素的 Optional 的数组。使用 ParamArray 关键字
可以提供任意数目的参数。ParamArray 关键字不能与 ByVal、ByRef或 Optional 一起使用。
varname 必需的。代表传给该过程的参数的变量名;遵循标准的变量命名约定。
( ) 对数组变量是必需的。指明 varname 是一个数组。
type 可选的。传递给该过程的参数的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支
持)、Date、String(只支持变长)、Object、Variant、用户自定义的类型或对象类型。
说明
对Function 过程而言,过程的数据类型决定其返回值的数据类型。可以在 arglist 之后使用 As 子句来指定函数返回值的数据类型。在
arglist 中,可以使用 As 子句来指定任何传给该过程的参数的数据类型。不单可以指定为任何标准数据类型,还可以在 arglist 中指定 As
Any 来禁止类型检查,从而允许将任意数据类型传递给该过程。
空圆括号表示该 Sub 或 Function 过程没有参数,且 Visual Basic 应确保不会传递任何参数。在下面的示例中,First 不带任何参数。如果
对 First 的调用中使用了参数,就会产生错误:
Declare Sub First Lib "MyLib" ()
如果带参数表,则每次调用该过程时都要检查参数的个数和类型。在下面的示例中,First 有一个 Long 参数:
Declare Sub First Lib "MyLib" (X As Long)
注意 在 Declare 语句的参数表中不能有定长的字符串;只有变长的字符串才能传给过程。定长的字符串

可以作为过程参数使用,但在传递前
都要被转换为变长的字符串。
注意 当所调用的外部过程需要一个值为 0 的字符串时,就要使用 vbNullString 常数。该常数与零长度字符串 ("") 是不相同的。
10.Deftype语句
在模块级别上,为变量和传给过程的参数,设置缺省数据类型,以及为其名称以指定的字符开头的 Function 和 Property Get 过程,设置返
回值类型。
语法
DefBool letterrange[, letterrange] . . .
DefByte letterrange[, letterrange] . . .
DefInt letterrange[, letterrange] . . .
DefLng letterrange[, letterrange] . . .
DefCur letterrange[, letterrange] . . .
DefSng letterrange[, letterrange] . . .
DefDbl letterrange[, letterrange] . . .
DefDec letterrange[, letterrange] . . .
DefDate letterrange[, letterrange] . . .
DefStr letterrange[, letterrange] . . .
DefObj letterrange[, letterrange] . . .
DefVar letterrange[, letterrange] . . .
所需的 letterrange 参数遵循下述语法:
letter1[-letter2]
letter1 和 letter2 参数指定设置缺省数据类型的名称范围。每个参数都是指变量,参数和 Function 过程,或 Property Get 过程名称的首
字母,且参数可以是字母表中的任意字母。letterrange 中不区分字母的大小写。
说明
语句的名字就确定相应的数据类型:
语句 数据类型
DefBool 布尔
DefByte Byte
DefInt Integer
DefLng Long
DefCur Currency
DefSng Single
DefDbl Double
DefDec Decimal(目前尚不支持)
DefDate Date
DefStr String
DefObj Object
DefVar Variant
例如,在下面的程序段中,Message 就是一个字符串变量:
DefStr A-Q
. . .
Message = "Out of stack space."
Deftype 语句只在使用该语句的模块中有效。例如,一个模块中的 DefInt 语句只对在该模块中声明的变量和传给过程的参数的缺省数据类型
,以及 Function 和 Property Get 过程的返回值的类型有效;而其它模块中的变量、参数、以及返回值的缺省数据类型就不受影响。如果不
用 Deftype 语句显式地声明,则所有变量、参数、Function 过程、以及 Property Get 过程的缺省数据类型都是 Variant。
当指定字符范围时,通常为以字符集的前 128 个字符中的字符开始的变量定义数据类型。不过,如果指定的字符范围是A-Z,则将所有的变量
,包括以字符集的扩展部分(128-255) 中的国际字符开始的变量的缺省类型都设为指定的类型。
在指定了A-Z 范围之后,就不能再使用 Deftype 语句来重新定

义任何子范围的变量了。在指定一个范围后,如果另一个 Deftype 语句定义的
范围中含有前面已定义的字符,就会产生错误。不过,不管变量是否已定义,都可以使用带 As type 子句的 Dim 语句来显式指定其数据类型
。例如,可以在模块级使用如下代码将一个缺省数据类型为 Integer 的变量定义为 Double:
DefInt A-Z
Dim TaxRate As Double
Deftype 语句对用户定义类型中的元素无影响,因为这些元素必须显式声明。
11.deletsetting
在 Windows 注册表中,从应用程序项目里删除区域或注册表项设置。
语法
DeleteSetting appname, section[, key]
DeleteSetting 语句的语法具有下列命名参数:
部分 描述
appname 必需的。字符串表达式,包含应用程序或工程的名称,区域或注册表项用于这些应用程序或工程。
section 必要。字符串表达式,包含要删除注册表项设置的区域名称。如果只有 appname 和 section,则将指定的区域连同所有有关的注册表
项设置都删除。
key 可选。字符串表达式,包含要删除的注册表项设置。
说明
如果提供了所有参数,则删除指定的注册表项设置。如果试图使用不存在的区域或注册表项设置上的 DeleteSetting 语句,则发生一个运行时
错误。
12.dim
声明变量并分配存储空间。
语法
Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .
Dim 语句的语法包含下面部分:
部分 描述
WithEvents 可选的。关键字,说明 varname 是一个用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用
WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。
varname 必需的。变量的名称;遵循标准的变量命名约定。
subscripts 可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:
[lower To] upper [, [lower To] upper] . . .
如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有使用 Option Base 语句,则下界为 0。
New 可选的。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set
语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。
type 可选的。变量的数据类型;可以是 Byte、布尔

、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、
String(对变长的字符串)、String * length (对定长的字符串)、Object、Variant、用户定义类型、或对象类型。所声明的每个变量都要
一个单独的 As type 子句。
说明
在模块级别中用 Dim 声明的变量,对该模块中的所有过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。
可以使用 Dim 语句在模块级或过程级中声明变量的数据类型。例如,下面的语句声明了 Integer 类型的变量。
Dim NumberOfEmployees As Integer
也可以使用 Dim 语句来声明变量的对象类型。下面的语句为工作表的新建实例声明了一个变量。
Dim X As New Worksheet
如果定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将该引用对象的变量赋值为一个已有对象。在该变量被
赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任一个对象实例。
也可以使用带空圆括号的 Dim 语句来定义动态数组。在定义动态数组后,可以在过程内使用 ReDim 语句来定义该数组的维数和元素。如果试
图在 Private,Public 或 Dim 语句中重新定义一个已显式定义了大小的数组的维数时,就会发生错误。
如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。
当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量
被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。
注意 当在过程中使用 Dim 语句时,通常将 Dim 语句放在过程的开始处。
13.do....loop
当条件为 True 时,或直到条件变为 True 时,重复执行一个语句块中的命令。
语法
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
或者可以使用下面这种语法:
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
Do Loop 语句的语法具有以下几个部分:
部分 描述
condition 可选参数。数值表达式或字符串表达式,其值为 True 或 False。如果 condition 是 Null,则 condition 会被当作 False。
statements 一条或多条命令,它们将被重复当或直到 condition 为 True。
说明
在Do…Loop 中可以在任何位置放置任意个数的 Exit Do 语句,随时跳出Do...Loop 循环。Exit Do 通常用于

条件判断之后,例如If Then,在
这种情况下,Exit Do 语句将控制权转移到紧接在 Loop 命令之后的语句。
如果 Exit Do 使用在嵌套的Do…Loop 语句中,则 Exit Do 会将控制权转移到 Exit Do 所在位置的外层循环。
14.end
结束一个过程或块。
语法
End
End Function
End If
End Property
End Select
End Sub
End Type
End With
End 语句的语法有以下几种形式:
语句 描述
End 停止执行。不是必要的,可以放在过程中的任何位置关闭代码执行、关闭以 Open 语句打开的文件并清除变量。
End Function 必要的,用于结束一个 Function 语句。
End If 必要的,用于结束一个If…Then…Else 语句块。
End Property 必要的,用于结束一个Property Let、Property Get、或 Property Set 过程。
End Select 必要的,用于结束一个 Select Case 语句。
End Sub 必要的,用于结束一个 Sub 语句。
End Type 必要的,用于结束一个用户定义类型的定义(Type 语句)。
End With 必要的,用于结束一个 With 语句。
说明
在执行时,End 语句会重置所有模块级别变量和所有模块的静态局部变量。若要保留这些变量的值,改为使用 Stop 语句,则可以在保留这些
变量值的基础上恢复执行。
注意 End 语句不调用 Unload、QueryUnload、或 Terminate 事件或任何其它 Visual Basic 代码,只是生硬地终止代码执行。窗体和类模
块中的 Unload、QueryUnload、和 Terminate 事件代码未被执行。类模块创建的对象被破坏,由 Open 语句打开的文件被关闭,并且释放程序
所占用的内存。其它程序的对象引用无效。
End 语句提供了一种强迫中止程序的方法。Visual Basic 程序正常结束应该卸载所有的窗体。只要没有其它程序引用该程序公共类模块创建的
对象并无代码执行,程序将立即关闭。
15.enum
定义枚举类型。
语法
[Public | Private] Enum name
membername [= constantexpression]
membername [= constantexpression]
. . .
End Enum
Enum 语句包含下面部分:
部分 描述
Public 可选的。表示该 Enum 类型在整个工程中都是可见的。Enum 类型的缺省情况是 Public。
Private 可选的。表示该 Enum 类型只在所声明的模块中是可见的。
name 必需的。该 Enum 类型的名称。name 必须是一个合法的 Visual Basic 标识符,在定义该 Enum 类型的变量或参数时用该名称来指定类
型。
membername 必需的。用于指定该 Enum 类型的组成元素名称

的合法 Visual Basic 标识符。
constantexpression 可选的。元素的值(为 Long 类型)。可以是别的 Enum 类型。如果没有指定 constantexpression,则所赋给的值或者
是 0(如果该元素是第一个 membername),或者比其直接前驱的值大 1。
说明
所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常
数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:
Enum SecurityLevel
IllegalEntry = -1
SecurityLevel1 = 0
SecurityLevel2 = 1
End Enum
Enum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。
类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有
相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum
类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。
不能在 With 块中使用 Enum 类型作为目标。
16.erase arraylist
重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。
语法
Erase arraylist
所需的 arraylist 参数是一个或多个用逗号隔开的需要清除的数组变量。
说明
Erase 根据是固定大小(常规的)数组还是动态数组,来采取完全不同的行为。Erase 无需为固定大小的数组恢复内存。Erase 按下表来设置
固定数组的元素:
数组类型 Erase 对固定数组元素的影响
固定数值数组 将每个元素设为 0。
固定字符串数组(长度可变) 将每个元素设为零长度字符串 ("")。
固定字符串数组(长度固定) 将每个元素设为 0。
固定 Variant 数组 将每个元素设为 Empty。
用户定义类型的数组 将每个元素作为单独的变量来设置。
对象数组 将每个元素设为特定值 Nothing。
Erase 释放动态数组所使用的内存。在下次引用该动态数组之前,程序必须使用 ReDim 语句来重新定义该数组变量的维数。
17.error
模拟错误的发生。
语法
Error errornumber
必要的 errornumber 可以是任何有效的错误号。
说明
Error 语句获得的支持是向后兼容的。在新的代码中,特别是在建立对象时,要使

用 Err 对象的 Raise 方法产生运行时错误。
如果已经定义 errornumber,那么,在 Err 对象的属性被赋予下列值之后,Error 语句会调用错误处理程序:
属性 值
Number 作为参数指定给 Error 语句的值。可以是任何有效的错误号。
Source 当前 Visual Basic 工程的名称。
Description 字符串表达式,如果这个字符串存在,则表达式将与 Error 函数的返回值一致,该返回值是 Error 函数对指定的 Number 的返
回值。如果这个字符串不存在,则 Description 包含一个长度为零的字符串 ("")。
HelpFile Visual Basic 帮助文件的完整限定的驱动器、路径和文件名。
HelpContext 对于与 Number 属性一致的错误所指定的 Visual Basic 帮助文件上下文 ID。
LastDLLError 零。
如果不存在错误处理程序,或未做任何启动动作,那么就会由 Err 对象属性发布一个错误信息并将错误信息显示出来。
注意 并非全部 Visual Basic 主应用程序都可以建立对象。请参考主机应用程序的文档来判断它能否建立类和对象。
18.event
定义用户自定义的事件。
语法
[Public] Event procedurename [(arglist)]
Event 语句包含下面部分:
部分 描述
Public 可选的。指定该 Event 在整个工程中都是可见的。缺省情况下 Events 类型是 Public。应注意,事件只能在所声明的模块中产生。
procedurename 必需的。事件的名称;遵循标准的变量命名约定。
arglist 参数的语法及语法的各个部分如下:
[ByVal | ByRef] varname[( )] [As type]
部分 描述
ByVal 可选的。表示该参数是按值传递的。
ByRef 可选的。表示该参数是按地址传递的。ByRef 是 Visual Basic 的缺省设置。
varname 必需的。代表要传递给过程的参数变量的名称;遵循标准的变量命名约定。
type 可选的。指传递给过程的参数的数据类型;可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持
)、Date、String(只支持变长)、Object、Variant、用户定义类型或对象类型。
说明
事件被声明之后,就可以使用 RaiseEvent 语句来产生该事件。如果在标准模块中出现 Event 声明,就会产生语法错误。不能声明带返回值的
事件。在下面的代码段中,给出了声明事件和产生事件的典型事件:
'在类模块的模块级中声明一个事件
Event LogonCompleted (UserName as String)
Sub
RaiseEvent LogonCompleted("AntoineJan")
End Sub
注意 可以象声明过程的参数一样来声明事件的参数,但有以下不同:事件

不能有带命名参数、Optional 参数、或者 ParamArray 参数。事件
没有返回值。
19.Exit语句 返回
退出 Do...Loop、For...Next、Function、Sub 或 Property 代码块。
语法
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
Exit 语句的语法有以下几种形式:
语句 描述
Exit Do 提供一种退出 Do...Loop 循环的方法,并且只能在 Do...Loop 循环中使用。Exit Do 会将控制权转移到 Loop 语句之后的语句。当
Exit Do 用在嵌套的 Do...Loop 循环中时,Exit Do 会将控制权转移到 Exit Do 所在位置的外层循环。
Exit For 提供一种退出 For 循环的方法,并且只能在 For...Next 或 For Each...Next 循环中使用。Exit For 会将控制权转移到 Next 之
后的语句。当 Exit For 用在嵌套的 For 循环中时,Exit For 将控制权转移到 Exit For 所在位置的外层循环。
Exit Function 立即从包含该语句的 Function 过程中退出。程序会从调用 Function 的语句之后的语句继续执行。
Exit Property 立即从包含该语句的 Property 过程中退出。程序会从调用 Property 过程的语句之后的语句继续执行。
Exit Sub 立即从包含该语句的 Sub 过程中退出。程序会从调用 Sub 过程的语句之后的语句继续执行。
说明
不要将 Exit 语句与 End 语句搞混了。Exit 并不说明一个结构的终止。
20.FileCopy语句 返回
复制一个文件。
语法
FileCopy source, destination
FileCopy 语句的语法含有以下这些命名参数:
部分 描述
source 必要参数。字符串表达式,用来表示要被复制的文件名。source 可以包含目录或文件夹、以及驱动器。
destination 必要参数。字符串表达式,用来指定要复制的目地文件名。destination 可以包含目录或文件夹、以及驱动器。
说明
如果想要对一个已打开的文件使用 FileCopy 语句,则会产生错误。
21.For Each...Next语句 返回
针对一个数组或集合中的每个元素,重复执行一组语句。
语法
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
For...Each...Next 语句的语法具有以下几个部分:
部分 描述
element 必要参数。用来遍历集合或数组中所有元素的变量。对于集合来说,element 可能是一个 Variant 变量、一个通用对象变量或任何特
殊对象变量。对于数组而言,element只能是一个 Variant 变量。
group 必要参数。对象集合或数组的名称(用户定义类型的数组除外)。
statements 可选参数,针对 g

roup 中的每一项执行的一条或多条语句。
说明
如果集合中至少有一个元素,就会进入 For...Each 块执行。一旦进入循环,便先针对 group 中第一个元素执行循环中的所有语句。如果
group 中还有其它的元素,则会针对它们执行循环中的语句,当 group 中的所有元素都执行完了,便会退出循环,然后从 Next 语句之后的语
句继续执行。
在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。Exit For经常在条件判断之后使用,例如If Then,并将控制权转移到紧
接在 Next 之后的语句。
可以将一个 For...Each...Next 循环放在另一个之中来组成嵌套式 For...Each...Next 循环。但是每个循环的 element 必须是唯一的。
注意 如果省略 Next 语句中的 element,就像 element 存在时一样执行。如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。
不能在 For...Each...Next 语句中使用用户自定义类型数组,因为 Variant 不能包含用户自定义类型。
22.For...Next语句 返回
以指定次数来重复执行一组语句。
语法
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
For…Next 语句的语法具有以下几个部分:
部分 描述
counter 必要参数。用做循环计数器的数值变量。这个变量不能是布尔或数组元素。
start 必要参数。counter 的初值。
End 必要参数,counter 的终值。
Step 可选参数。counter 的步长。如果没有指定,则 step 的缺省值为 1。
Statements 可选参数。放在 For 和 Next 之间的一条或多条语句,它们将被执行指定的次数。
说明
step 参数可以是正数或负数。step 参数值决定循环的执行情况,如下所示:
值 循环执行,如果
正数或 0 counter <= end
负数 counter >= end
当所有循环中的语句都执行后,step 的值会加到 counter 中。此时,循环中的语句可能会再次执行(基于循环开始执行时同样的测试),也
可能是退出循环并从 Next 语句之后的语句继续执行。
提示 在循环中改变 counter 的值,将会使程序代码的阅读和调试变得更加困难。
循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。 Exit For经常在条件判断之后使用,例如 If...Then,并将控制权转移到
紧接在 Next 之后的语句。
可以将一个 For...Next 循环放置在另一个 For...Next 循环中,组成嵌套循环。不过在每个循环中的 counter 要使用不同的变量名。下面的
体系结构是正

确的:
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I
注意 如果省略 Next 语句中的 counter,就像 counter 存在时一样执行。但如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误

23.Function语句 返回
声明 Function 过程的名称,参数以及构成其主体的代码。
语法
[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
Function 语句的语法包含下面部分:
部分 描述
Public 可选的。表示所有模块的所有其它过程都可访问这个 Function 过程。如果是在包含 Option Private 的模块中使用,则这个过程在该
工程外是不可使用的。
Private 可选的。表示只有包含其声明的模块的其它过程可以访问该 Function 过程。
Friend 可选的。只能在类模块中使用。表示该 Function 过程在整个工程中都是可见的,但对于对象实例的控制者是不可见的。
Static 可选的。表示在调用之间将保留 Function 过程的局部变量值。Static 属性对在该 Function 外声明的变量不会产生影响,即使过程
中也使用了这些变量。
name 必需的。Function 的名称;遵循标准的变量命名约定。
arglist 可选的。代表在调用时要传递给 Function 过程的参数变量列表。多个变量应用逗号隔开。
type 可选的。Function 过程的返回值的数据类型,可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支
持)、Date、String(除定长)、Object、Variant或任何用户定义类型。
statements 可选的。在 Function 过程中执行的任何语句组。
expression 可选的。Function 的返回值。
其中的 arglist 参数的语法以及语法各个部分如下:
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]
部分 描述
Optional 可选的。表示参数不是必需的。如果使用了该选项,则 arglist 中的后续参数都必须是可选的,而且必须都使用 Optional 关键字
声明。如果使用了 ParamArray,则任何参数都不能使用 Optional 声明。
ByVal 可选的。表示该参数按值传递。
ByRef 可选的。表示该参数按地址传递。ByRef 是 Visual Basic 的缺省选项。
ParamArray 可选的。只用于 arglist 的最后一个参数,指明最后这个参数是一个 Variant 元素的 Optional 数组。使用 ParamArray 关键字
可以提供任意数目的参数。ParamArray 关

键字不能与 ByVal,ByRef,或 Optional 一起使用。
varname 必需的。代表参数的变量的名称;遵循标准的变量命名约定。
type 可选的。传递给该过程的参数的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支
持)、Date、String(只支持变长)、Object 或 Variant。如果参数不是 Optional,则也可以是用户定义类型,或对象类型。
defaultvalue 可选的。任何常数或常数表达式。只对于 Optional 参数时是合法的。如果类型为 Object,则显式缺省值只能是 Nothing。
说明
如果没有使用 Public、Private 或 Friend 显式指定,则 Function 过程缺省为公用。如果没有使用 Static,则局部变量的值在调用之后不
会保留。Friend 关键字只能在类模块中使用。但 Friend 过程可以被工程的任何模块中的过程访问。Friend 过程不会在其父类的类型库中出
现,且 Friend 过程不能被后期绑定。
注意 Function 过程可以是递归的;也就是说,该过程可以调用自己来完成某个特定的任务。不过,递归可能会导致堆栈上溢。通常 Static
关键字和递归的 Function 过程不在一起使用。
所有的可执行代码都必须属于某个过程。不能在另外的 Function、Sub 或 Property 过程中定义 Function 过程。
Exit Function 语句使执行立即从一个 Function 过程中退出。程序接着从调用该 Function 过程的语句之后的语句执行。在 Function 过程
的任何位置都可以有 Exit Function 语句。
Function 过程与 Sub 过程的相似之处是: Function 过程是一个可以获取参数,执行一系列语句,以及改变其参数值的独立过程,而与子过
程不同的是:当要使用该函数的返回值时,可以在表达式的右边使用 Function 过程,这与内部函数,诸如 Sqr、Cos 或 Chr 的使用方式一样

在表达式中,可以通过使用函数名,并在其后用圆括号给出相应的参数列表来调用一个 Function 过程。请参阅 Call 语句关于如何调用
Function 过程的详细说明。
要从函数返回一个值,只需将该值赋给函数名。在过程的任意位置都可以出现这种赋值。如果没有对 name 赋值,则过程将返回一个缺省值:
数值函数返回 0,字符串函数返回一个零长度字符串 (""),Variant 函数则返回 Empty。如果在返回对象引用的 Function 过程中没有将对象
引用赋给 name (通过 Set),则函数返回 Nothing。
下面的示例说明如何给一个名为 BinarySearch 的函数赋返回值。在这个示例中,将 False 赋给了该函数名,表示没有找到某个值。
Function BinarySearch

(. . .) As Boolean
. . .
'值未找到,返回一个 False 值。
If lower > upper Then
BinarySearch = False
Exit Function
End If
. . .
End Function
在 Function 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 Dim 或等效方法)都
是局部变量。对于那些没有在过程中显式声明的变量,除非它们在该过程外更高级别的位置有显示地声明,否则也是局部的。
注意 过程可以使用没有在过程内显式声明的变量,但只要有任何在模块级别中定义的名称与之相同,就会产生名称冲突。如果过程中使用的未
声明的变量与另一个过程,常数,或变量的名称相同,则会认为过程使用的是模块级的名称。显式声明变量就可以避免这类冲突。可以使用
Option Explicit 语句来强制显式声明变量。
注意 Visual Basic 可能会重新安排数学表达式以提高内部效率。若 Function 过程会改变某个数学表达式中变量的值,则应避免在此表达式
中使用该函数。
24.Get 语句 返回
将一个已打开的磁盘文件读入一个变量之中。
语法
Get [#]filenumber, [recnumber], varname
Get 语句的语法具有以下几个部分:
部分 描述
filenumber 必要。任何有效的文件号。
recnumber 可选。Variant (Long)。记录号(Random 方式的文件)或字节数(Binary 方式的文件),以表示在此处开始读出数据。
varname 必要。一个有效的变量名,将读出的数据放入其中。
说明
通常用 Put 将 Get 读出的数据写入一个文件。
文件中第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。若省略 recnumber,则会读出紧随上一个 Get 或 Put 语句
之后的下一个记录或字节(或读出最后一个 Seek 函数指出的记录或字节)。所有用于分界的逗号都必须罗列出来,例如:
Get #4,,FileBuffer
下列规则适用于以 Random 方式打开的文件:
如果要读出的数据的长度小于 Open 语句的 Len 子句中所指定的长度,Get 会在某个边界之内读出随后的记录,在这里,边界的长度等于记录
的长度。将此文件缓冲区内的现有内容填入到一个空间之内,该空间介于一个记录的结尾与下一个记录的开头之间。因为无法确定填入的数据
量,所以,应设法使记录的长度与读出的数据长度一致,这通常是个好办法。
如果读出的变量是一个可变长度字符串,则 Get 语句先读出一个含有字符串长度的双字节描述符,然后读出放入

变量中的数据。所以,Open
语句中的 Len 子句所指定的记录长度必须至少比字符串的实际长度多两个字节。
如果读出的变量是一个数值类型的 Variant,则 Get 先读出两个字节,识别 Variant 的 VarType,然后读出放入此变量中的数据。例如,在
读出 VarType 3 的 Variant 时,Get 读出六个字节:前两个字节说明 Variant 为 VarType 3 (Long),后四个字节则包含 Long 类型数据。
Open 语句中的 Len 子句所指定的记录长度必须至少比储存变量所需的实际长度多两个字节。
注意 可以使用 Get 语句从磁盘中读出一个 Variant 数组,但不能使用它读出包含数组的标量 Variant。也不能使用 Get 从磁盘中读出对象

如果读出的变量是 VarType 8 (String) 的 Variant,则 Get 先读出两个字节,识别 VarType,接下来的两个字节指出字符串的长度,然后读
出字符串数据。Open 语句中的 Len 子句所指定的记录长度必须比实际字符串的长度至少多四个字节。
如果读出的变量是一个动态数组,则 Get 会读出一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。读出数组
数据和数组描述符就需要占据字节,而 Open 语句中的 Len 子句所指定的记录长度必须大于或等於这些字节数的总和。 例如,在将数组写入
磁盘时,下列数组声明需要 118 个字节:
Dim MyArray(1 To 5,1 To 10) As Integer
这 118 个字节的分配情况如下:18 个字节用于描述符 (2 + 8 * 2),100 个字节用于数据 (5 * 10 * 2)。
如果读出的变量是一个大小固定的数组,则 Get 只读出数据。它不读出描述符。
如果读出的变量是任何其他类型的变量(不是可变长度的字符串或 Variant£?,则 Get 只读出变量数据。Open 语句中的 Len 子句所指定的
记录长度必须大于或等於要读出的数据的长度。
Get 在读出用户定义类型的元素时,好象是单独地读出每一个元素,只是不在元素之间进行填充。在磁盘上,(用 Put 写入的)用户定义的类
型的动态数组之前有一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句中的 Len 子句所指定的记录
长度必须大于或等於读出个别元素(包括任何数组及其描述符在内)所需的全部字节数总和。
对于以 Binary 方式打开的文件,Random 的所有规则都适用,但以下情况除外:
当 Open 语句中的 Len 子句不起作用时,Get 连续从磁盘中读出所有变量;也就是说,两个记录之间没有任何填充。
对于任何不属于用户定义的类型的数组,Get 只读出数据。它不会读出描述

符。
Get 读出可变长度字符串,不管这些字符串是否具有长度为 2 字节的描述符,它们都不是用户定义的类型的元素。所读出的字节数等於字符串
已包含的字符数。例如,下列语句从文件号为 1 的文件中读出十个字节:
VarString = String(10, )
Get #1,,VarString
25.GoSub...Return语句 返回
在一个过程中跳到另一个子程序中执行,执行后再返回。
语法
GoSub line
...
line
...
Return
必要的 line 参数可以是任何行标签或行号。
说明
可以在过程中的任何地方使用 GoSub 和 Return,但是 GoSub 和与之相应的 Return 语句必须放在同一个过程中。一个子程序中可以包含一个
以上的 Return 语句,但是当碰到第一个 Return 语句时,程序就会返回到紧接在刚刚执行的 GoSub 语句之后的语句继续执行。
注意 不能使用 GoSub...Return 来进入或退出 Sub 过程。
提示 创建分开的过程,并使用 GoSub...Return 来调用,可以使程序更具结构化。
26.GoTo语句 返回
无条件地转移到过程中指定的行。
语法
GoTo line
必要的 line 参数可以是任意的行标签或行号。
说明
GoTo 只能跳到它所在过程中的行。
注意 太多的 GoTo 语句,会使程序代码不容易阅读及调试。尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select
Case)。
27.If...Then...Else语句 返回
根据表达式的值有条件地执行一组语句。
语法
If condition Then [statements][Else elsestatements]
或者,可以使用块形式的语法:
If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements] ...
[Else
[elsestatements]]
End If
If...Then...Else 语句的语法具有以下几个部分:
部分 描述
condition 必要参数。一个或多个具有下面两种类型的表达式:
数值表达式或字符串表达式,其运算结果为 True 或 False。如果 condition 为 Null,则 condition 会视为 False。
TypeOf objectname Is objecttype 形式的表达式。其中的 objectname 是任何对象的引用,而 objecttype 则是任何有效的对象类型。如
果 objectname 是 objecttype 所指定的一种对象类型,则表达式为 True,否则为False。
statements 在块形式中是可选参数;但是在单行形式中,且没有 Else 子句时,则为必要参数。一条或多条以冒号分开的语句,它们在
condition 为 True 时执行。
condition-n 可选参数。与 condition 同。
elseifstatements 可选参数。

一条或多条语句,它们在相关的 condition-n 为 True 时执行。
elsestatements 可选参数。一条或多条语句,它们在前面的 condition 或 condition-n 都不为 True 时执行。
说明
可以使用单行形式(第一种语法)来做短小简单的测试。但是,块形式(第二种语法)则提供了更强的结构化与适应性,并且通常也是比较容
易阅读、维护及调试的。
注意 在单行形式中,按照 If...Then 判断的结果也可以执行多条语句。所有语句必须在同一行上并且以冒号分开,如下面语句所示:
If A > 10 Then A = A + 1 : B = B + A : C = C + B
在块形式中,If 语句必须是第一行语句。其中的 Else、 ElseIf,和 End If 部分可以只在之前加上行号或行标签。If 块必须以一个 End If
语句结束。
要决定某个语句是否为一个 If 块,可检查 Then 关键字之后是什么。如果在 Then 同一行之后,还有其它非注释的内容,则此语句就是单行
形式的 If 语句。
Else 和 ElseIf 子句都是可选的。在 If 块中,可以放置任意多个 ElseIf 子句,但是都必须在 Else 子句之前。If 块也可以是嵌套的。
当程序运行到一个 If 块(第二种语法)时,condition 将被测试。如果 condition为 True,则在 Then 之后的语句会被执行。如果
condition 为 False,则每个 ElseIf 部分的条件式(如果有的话)会依次计算并加以测试。如果找到某个为 True 的条件时,则其紧接在相
关的 Then 之后的语句会被执行。如果没有一个 ElseIf 条件式为 True(或是根本就没有 ElseIf 子句),则程序会执行 Else 部分的语句。
而在执行完 Then 或 Else 之后的语句后,会从 End If 之后的语句继续执行。
提示 根据单一表达式来执行多种可能的动作时,Select Case 更为有用。不过,TypeOf objectname Is objecttype 子句不能在 Select Case
语句中使用。
注意 TypeOf 不能与诸如 Long、Integer 以及其他不是 Object 的固定数据类型一起使用。
28.Implements语句 返回
指定要在包含该语句的类模块中实现的接口或类。
语法
Implements [InterfaceName | Class]
所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。
说明
所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多个接口的所
有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一个缺省接口。

在 Visual
Basic 中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。
当 Visual Basic 类实现接口时,都会提供该接口的类型库中说明的所有 Public 过程的版本。除了提供接口原型与自编过程之间的映射关系
之外,Implements 语句还使这个类接收对指定接口 ID 的 COM QueryInterface 调用。
注意 Visual Basic 不能实现派生出来的类或接口。
在实现接口或类时,必须包括所用到的 Public 过程。如果在实现接口或类时遗漏了成员,就会产生错误。如果正在实现的类中某个过程还没
有代码,则可以产生一个适当的错误信息 (Const E_NOTIMPL = &H80004001),以便用户意识到该成员还没有实现。
Implements 语句不能在标准模块中使用。
29.Input #语句 返回
从已打开的顺序文件中读出数据并将数据指定给变量。
语法
Input #filenumber, varlist
Input # 语句的语法具有以下几个部分:
部分 描述
filenumber 必要。任何有效的文件号。
varlist 必要。用逗号分界的变量列表,将文件中读出的值分配给这些变量;这些变量不可能是一个数组或对象变量。但是,可以使用变量描
述数组元素或用户定义类型的元素。
说明
通常用 Write # 将 Input # 语句读出的数据写入文件。该语句只能用于以 Input 或 Binary 方式打开的文件。
在读出数据时不经修改就可直接将标准的字符串或数值数据指定给变量。下表说明如何处理其它输入数据:
数据 指定给变量的值
分隔逗号或空白行 Empty
#NULL# Null
#TRUE# or #FALSE# True 或 False
#yyyy-mm-dd hh:mm:ss# 用表达式表示的日期与/或时间
#ERROR errornumber# errornumber(此变量是一个 Variant,用来标记错误)
输入数据中的双引号符号 (" ") 将被忽略。
文件中数据项目的顺序必须与 varlist 中变量的顺序相同,而且与相同数据类型的变量匹配。如果变量为数值类型而数据不是数值类型,则指
定变量的值为零。
在输入数据项目时,如果已到达文件结尾,则会终止输入,并产生一个错误。
注意 为了能够用 Input # 语句将文件的数据正确读入到变量中,在将数据写入文件时,要使用 Write # 语句而不使用 Print # 语句。使用
Write # 语句可以确保将各个单独的数据域正确分隔开。
30.Kill语句 返回
从磁盘中删除文件。
语法
Kill pathname
必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明
在 Microsoft Windows 中,Kill 支持多字符 (*) 和单字符 (?) 的通配符来指定多重文件。
31.Let语句 返回
将表达式的值赋给变量或属性。
语法
[Let] varname = expression
Let 语句的语法包含下面部分:
部分 描述
Let 可选的。显式使用 Let 关键字也是一种格式,但通常都省略该关键字。
varname 必需的。变量或属性的名称;遵循标准变量命名约定。
expression 必需的。赋给变量或属性的值。
说明
只有当表达式是一种与变量兼容的数据类型时,该表达式的值才可以赋给变量或属性。不能将字符串表达式的值赋给数值变量,也不能将数值
表达式的值赋给字符串变量。如果这样做,就会在编译时间出现错误。
可以用字符串或数值表达式赋值给 Variant 变量,但反过来不一定正确。任何除 Null 之外的 Variant 都可以赋给字符串变量,但只有当
Variant 的值可以解释为某个数时才能赋给数值变量。可以使用 IsNumeric 函数来确认 Variant 是否可以转换为一个数。
注意 将一种数值类型的表达式赋给另一种数值类型的变量时,会强制将该表达式的值转换为结果变量的数值类型。
Let 语句可以将一个记录类型的变量赋给属于同一用户定义类型的变量。使用 LSet 语句可以给不同用户自定义类型的记录变量赋值。使用
Set 语句可以将对象引用赋给变量。
32.Line Input #语句 返回
从已打开的顺序文件中读出一行并将它分配给 String变量。
语法
Line Input #filenumber, varname
Line Input # 语句的语法具有以下几个部分:
部分 描述
filenumber 必要。任何有效的文件号。
varname 必要。有效的 Variant 或 String 变量名。
说明
通常用 Print # 将 Line Input # 语句读出的数据从文件中写出来。
Line Input # 语句一次只从文件中读出一个字符,直到遇到回车符 (Chr(13)) 或回车-换行符 (Chr(13) + Chr(10)) 为止。回车-换行符将被
跳过,而不会被附加到字符串上。
33.Lock,Unlock语句 返回
对于用 Open 语句打开的全部文件或一部分文件,其它进程所进行的控制访问。
语法
Lock [#]filenumber[, recordrange]
. . .
Unlock [#]filenumber[, recordrange]
Lock 和 Unlock 语句的语法具有以下几个部分:
部分 描述
filenumber 必要。任何有效的文件号。
recordrange 可选。要锁定或解锁的记录范围。
设置
recordrange 参数的设置如下:
recnumber | [start] To end
设置

相关文档