聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> vb常用语句

vb常用语句

时间:2012-03-16 18:11:59    下载该word文档

Vb常用语句解析

下面10条语句是最常用的语句,将指针移到上面按ctrl键单击可查看用法:包括功能、语法、参数、举例等。

1Let(赋值语句即=

3Dim语句

7If...Then...Else 语句

21Select case

6For...Next 语句

19While...Wend 语句

15Randomize 语句

16Rem 语句

17Static 语句

18Unload 语句

1Let(赋值语句即=

功能:表达式的值赋给变量属性

语法

[Let] varname = expression

Let 语句的语法包含下面部分:

部分

描述

Let

可选的。显式使用 Let 关键字也是一种格式,但通常都省略该关键字。

varname

必需的。变量或属性的名称;遵循标准变量命名约定。

expression

必需的。赋给变量或属性的值。

2call语句

将控制权转移到一个 Sub 过程,Function 过程,或动态连接库 (DLL)过程

语法

[Call] name [argumentlist]

Call 语句的语法具有以下几个部分:

部分

描述

Call

可选参数;关键字。如果指定了这个关键字,则 argumentlist 必须加上括号,例如:

Call MyProc(0)

name

必要参数,要调用的过程名称。

argumentlist

说明

调用一个过程时,并不一定要使用 Call 关键字。如果使用 Call 关键字来调用一个需要参数的过程,argumentlist 就必须要加上括号。如果省略了 Call 关键字,那么也必须要省略 argumentlis 外面的括号。如果使用 Call 语法来调用内建函数或用户定义函数,则函数的返回值将被丢弃。

若要将整个数组传给一个过程,使用数组名,然后在数组名后加上空括号。

3Dim语句

声明变量并分配存储空间。

语法

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布尔IntegerLongCurrencySingleDoubleDecimal(目前尚不支持)、DateString(对变长的字符串)、String * length (对定长的字符串)、ObjectVariant用户定义类型、或对象类型。所声明的每个变量都要一个单独的 As type 子句。

说明

模块级别中用 Dim 声明的变量,对该模块中的所有过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。

可以使用 Dim 语句在模块级或过程级中声明变量的数据类型。例如,下面的语句声明了 Integer 类型的变量。

Dim NumberOfEmployees As Integer

也可以使用 Dim 语句来声明变量的对象类型。下面的语句为工作表的新建实例声明了一个变量。

Dim X As New Worksheet

如果定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将该引用对象的变量赋值为一个已有对象。在该变量被赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任一个对象实例。

也可以使用带空圆括号的 Dim 语句来定义动态数组。在定义动态数组后,可以在过程内使用 ReDim 语句来定义该数组的维数和元素。如果试图在 PrivatePublic Dim 语句中重新定义一个已显式定义了大小的数组的维数时,就会发生错误。

如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。

当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。

注意 当在过程中使用 Dim 语句时,通常将 Dim 语句放在过程的开始处。

 

4Dim 语句示例

该示例演示使用 Dim 语句来声明变量,也演示了用 Dim 语句来声明数组。数组的缺省下界为 0,可以在模块级使用 Option Base 语句来取代数组的缺省下界。

'AnyValue MyValue 按缺省情况被声明为 Variant

'同时值被设为 Empty

Dim AnyValue, MyValue'显式声明一个 Integer 类型的变量。

Dim Number As Integer'在一行中声明多个变量。AnotherVar Variant 类型,

'因为它的类型被省略了。

Dim AnotherVar, Choice As Boolean, BirthDate As Date'Day 是一个有 51 个索引(从 0 50)元素的 Variant 数组,

'假设在当前模块中 Option Base 被设为 0(缺省设置)。

Dim Day(50)'Matrix 是一个二维 Integer 数组。

Dim Matrix(3, 4) As Integer'MyMatrix 是一个显式指定了上下界

'的三维 double 数组。

Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double'BirthDay 是一个索引从 1 10 date 数组。

Dim BirthDay(1 To 10) As Date 'My 是一个 variant 动态数组。

5Exit 语句

示例

退出 Do...LoopFor...NextFunctionSub 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 并不说明一个结构的终止。

 

Exit 语句示例

本示例使用 Exit 语句退出 For...Next 循环、Do...Loop 循环及子过程。

Sub ExitStatementDemo()

Dim I, MyNum

Do ' 建立无穷循环。

For I = 1 To 1000 ' 循环 1000 次。

MyNum = Int(Rnd * 1000) ' 生成一随机数码。

Select Case MyNum ' 检查随机数码。

Case 7: Exit For ' 如果是 7,退出 For...Next 循环。

Case 29: Exit Do ' 如果是 29,退出 Do...Loop 循环。

Case 54: Exit Sub ' 如果是 54,退出子过程。

End Select

Next I

Loop

End Sub

6For...Next 语句

以指定次数来重复执行一组语句For...Next

语法

For counter = start To end [Step step]

[statements]

[Exit For]

[statements]

Next [counter]

ForNext 语句的语法具有以下几个部分:

部分

描述

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 语句之前出现,则会产生错误。

 

For...Next 语句示例

本示例使用 For...Next 语句创建一个字符串,其内容为由 0 9 的十个数字所组成的字符串,每个字符串之间用空格隔开。外层循环使用一个变量当作循环计数器,每循环一次,变量值减一。

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 ' 建立 10 次循环。

For Chars = 0 To 9 ' 建立 10 次循环。

MyString = MyString & Chars ' 将数字添加到字符串中。

Next Chars ' Increment counter

MyString = MyString & " " ' 添加一个空格。

Next Words

7If...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 时执行。

8Input # 语句

从已打开的顺序文件中读出数据并将数据指定给变量

语法

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 # 语句可以确保将各个单独的数据域正确分隔开。

 

9Input # 语句示例

本示例使用 Input # 语句将文件内的数据读入两个变量中。本示例假设 TESTFILE文件内含数行以 Write # 语句写入的数据;也就是说,每一行数据中的字符串部分都是用双引号括起来,而与数字用逗号隔开,例如,("Hello", 234)。

Dim MyString, MyNumber

Open "TESTFILE" For Input As #1 ' 打开输入文件。

Do While Not EOF(1) ' 循环至文件尾。

Input #1, MyString, MyNumber ' 将数据读入两个变量。

Debug.Print MyString, MyNumber ' 在立即窗口中显示数据。

Loop

Close #1 ' 关闭文件。

10Load 语句

把窗体或控件加载到内存中。

语法

Load object

objec 所在处是要加载的 Form 对象、MDIForm 对象或控件数组元素的名称。

说明

除非在加载窗体时不需要显示窗体,否则对于窗体不需要使用 Load 语句。在窗体还未被加载时,对窗体的任何引用(在 Set If...TypeOf 语句以外)会自动加载该窗体。例如,Show 方法在显示窗体前会先加载它。一旦窗体被加载,不管它是否可见,它的属性及控件会被应用程序所改变。在某些情况下,也许需要在初始化时加载所有的窗体并在以后需要它们的时候显示它们。

Visual Basic 加载 Form 对象时,先把窗体属性设置为初始值,再执行 Load 事件过程。当应用程序开始运行时,Visual Basic 自动加载并显示应用程序的启动窗体。

在加载 MDIChild 属性为 True Form(换言之,子窗体)时,而此时 MDIForm 还未被加载,那么会在子窗体前自动加载 MDIForm。因为 MDI 子窗体不能被隐藏起来,所以在 Form_Load 事件过程结束时马上可以见到 MID 子窗体。

Visual Basic 函数产生的标准对话框,诸如 MsgBox InputBox,不需要加载、显示或卸载即可简单地直接调用。

 

Load 语句示例

这个示例使用 Load 语句加载 Form 对象。要试用此示例,在 Form 对象的声明部分粘贴以下代码,然后运行此例并单击该 Form 对象。

Private Sub Form_Click ()

Dim Answer, Msg as String ' 声明变量。

Unload Form1 ' 卸载窗体。

Msg = "Form1 has been unloaded. Choose Yes to load and "

Msg = Msg & "display the form. Choose No to load the form "

Msg = Msg & "and leave it invisible."

Answer = MsgBox(Msg, vbYesNo) ' 获得用户响应。

If Answer = vbYes Then ' 测试应答。

Show ' 如果回答 Yes,则显示窗体。

Else

Load Form1 ' 如果回答 NO,则仅加载窗体。

Msg = "Form1 is now loaded. Choose OK to display it."

MsgBox Msg ' 显示消息。

Show ' 显示窗体。

End If

End Sub

11Mid 语句

在一 Variant (String) 变量中以另一个字符串中的字符替换其中指定数量的字符。

语法

Mid(stringvar, start[, length]) = string

Mid 语句的语法具有下面几个部分:

部分

描述

stringvar

必要参数。被更改的字符串变量名。

start

必要参数;Variant (Long)stringvar 中被替换的字符开头位置。

length

可选参数;Variant (Long)。被替换的字符数。如果省略,string将全部用上。

string

必要参数。字符串表达式,替换部分 stringvar 的字符串。

说明

被替换的字符数量总是小于或等于 stringvar 的字符数。

注意 MidB 语句作用于包含在字符串中的字节数据。在 MidB 语句中,start 指定 stringvar 中被替换的字节开头位置,而 length 为替换的字节数。

 

Mid 语句示例

本示例使用 Mid 语句将某字符串中的几个字符替换为其他的字符。

Dim MyString

MyString = "The dog jumps" ' 设置字符串初值。

Mid(MyString, 5, 3) = "fox" ' MyString = "The fox jumps"

Mid(MyString, 5) = "cow" ' MyString = "The cow jumps"

Mid(MyString, 5) = "cow jumped over" ' MyString = "The cow jumpe"

Mid(MyString, 5, 3) = "duck" ' MyString = "The duc jumpe"

12Open 语句

能够对文件输入/输出 (I/O)

语法

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

Open 语句的语法具有以下几个部分:

部分

描述

pathname

必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。

mode

必要。关键字,指定文件方式,有 AppendBinaryInputOutput、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。

access

可选。关键字,说明打开的文件可以进行的操作,有 ReadWrite、或 Read Write 操作。

lock

可选。关键字,说明限定于其它进程打开的文件的操作,有 SharedLock ReadLock Write、和 Lock Read Write 操作。

filenumber

必要。一个有效的文件号,范围在 1 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。

reclength

可选。小于或等于 32767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。

说明

对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。

如果 pathname 指定的文件不存在,那么,在用 AppendBinaryOutput、或 Random 方式打开文件时,可以建立这一文件。

如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。

如果 mode Binary 方式,则 Len 子句会被忽略掉。

重要 BinaryInput Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。

 

13Open 语句示例

本示例示范 Open 语句的不同用法来做到文件的输出与输入。

下列代码以顺序输入模式打开 TESTFILE 文件。

Open "TESTFILE" For Input As #1

' 若要以其他方式打开文件,必需先关闭此文件。

Close #1

下列代码以只允许写操作的二进制方式打开文件。

Open "TESTFILE" For Binary Access Write As #1

' 若要以其他方式打开文件,必需先关闭此文件。

Close #1

下列代码以随机方式打开文件,文件中含有用户自定义数据类型 Record 的记录。

Type Record ' 定义用户自定义数据类型。

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record ' 声明变量。

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

' 若要以其他方式打开文件,必需先关闭此文件。

Close #1

下列代码以顺序输出方式打开文件;任何过程都可以读写该文件。

Open "TESTFILE" For Output Shared As #1

' 若要以其他方式打开文件,必需先关闭此文件。

Close #1

下列代码以只允许读的二进制方式打开文件;其他过程不可以读该文件。

Open "TESTFILE" For Binary Access Read Lock Read As #1

14Print # 语句

将格式化显示的数据写入顺序文件中。

语法

Print #filenumber, [outputlist]

Print # 语句的语法具有以下几个部分:

部分

描述

filenumber

必要。任何有效的文件号

outputlist

可选。表达式或是要打印的表达式列表。

设置

outputlist 参数的设置如下:

[{Spc(n) | Tab[(n)]}] [expression] [charpos]

设置

描述

Spc(n)

用来在输出数据中插入空白字符,而 n 指的是要插入的空白字符数。

Tab(n)

用来将插入点定位在某一绝对列号上,这里,n 是列号。使用无参数的 Tab 将插入点定位在下一个打印区的起始位置。

expression

要打印的数值表达式字符串表达式

charpos

指定下一个字符的插入点。使用分号将插入点定位在上一个显示字符之后。用 Tab(n) 将插入点定位在某一绝对的列号上,用无参数的 Tab 将插入点定位在下一个打印区的起始处。如果省略 charpos,则在下一行打印下一个字符。

说明

通常用 Line Input # Input 读出 Print # 在文件中写入的数据。

如果省略参数 outputlist,而且,filenumber 之后只含有一个列表分隔符,则将一空白行打印到文件中。多个表达式之间可用一个空白或一个分号隔开。空白与分号等效。

对于 Boolean 类型的数据,打印的是 True False。无论在什么国别,都不将 True False 这两个关键字翻译出来。

使用操作系统所能够辨认的标准短日期格式可将 Date 类型的数据写入文件中。在未指定日期或时间部件或这些部件的设置为零时,只将指定的部分写入文件中。

如果 outputlist 的数据是 Empty,则不将任何数据写入文件。但是,如果 outputlist 的数据是 Null,则将 Null 写入文件。

对于 Error 类型的数据而言,输出的数据看起来与 Error errorcode 一样。而且无论在什么地区,都不将 Error 关键字翻译出来。

Print # 写入文件的所有数据都是国际通用的;也就是说,可以正确利用十进制分隔符将这些数据格式化。

因为 Print # 将数据的图像写入文件,所以必须将各项数据分隔开来,以便正确打印。如果使用无参数的 Tab 将打印位置移动到下一个打印区,则 Print # 也会将打印字段之间的空白写入文件中。

注意 如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 Print # 语句将数据写入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都被正确读出。

 

Print # 语句示例

本示例使用 Print # 语句将数据写入一个文件。

Open "TESTFILE" For Output As #1 ' 打开输出文件。

Print #1, "This is a test" ' 将文本数据写入文件。

Print #1, ' 将空白行写入文件。

Print #1, "Zone 1" Tab "Zone 2" ' 数据写入两个区(print zones)。

Print #1, "Hello" " " "World" ' 以空格隔开两个字符串。

Print #1, Spc(5) "5 leading spaces " ' 在字符串之前写入五个空格。

Print #1, Tab(10) "Hello" ' 将数据写在第十列。' 赋值 BooleanDateNull Error 等。

Dim MyBool, MyDate, MyNull, MyError

MyBool = False : MyDate = #February 12, 1969# : MyNull = Null

MyError = CVErr(32767)

' TrueFalseNull Error 会根据系统的地区设置自动转换格式。

' 日期将以标准的短式日期的格式显示。

Print #1, MyBool " is a Boolean value"

Print #1, MyDate " is a date"

Print #1, MyNull " is a null value"

Print #1, MyError " is an error value"

Close #1 ' 关闭文件。

15Randomize 语句

初始化随机数生成器。

语法

Randomize [number]

可选的 number 参数 Variant 或任何有效的数值表达式

说明

Randomize number Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。

如果没有使用 Randomize,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。

注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。

 

Randomize 语句示例

本示例用 Randomize 语句初始化随机数生成器。由于忽略了数值参数, 所以 Randomize Timer 函数的返回值作为新的随机数种子值。

Dim MyValue

Randomize ' 对随机数生成器做初始化的动作。MyValue = Int((6 * Rnd) + 1) ' 生成 1 6 之间的随机数值。

16Rem 语句

 

用来在程序中包含注释。

语法

Rem comment

也可以使用如下语法:

' comment

comment 参数是可选的,指要包括的任何注释文本。在 Rem 关键字 comment 之间要加一个空格。

说明

如果使用行号行标签,则可以从 GoTo GoSub 语句转到一个 Rem

17Static 语句

过程级别中使用,用于声明变量并分配存储空间。在整个代码运行期间都能保留使用 Static 语句声明的变量的值。

语法

Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . .

Static 语句的语法包含下面部分:

部分

描述

varname

必需的。变量的名称;遵循标准变量命名约定。

subscripts

可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:

[lower To] upper [,[lower To] upper] . . .

如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有 Option Base 语句则下界为 0

New

可选的。用它可以隐式地创建对象的关键字。如果使用 New 声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来对该对象引用赋值。New 关键字不能用来声明任何内部数据类型的变量,也不能用来声明从属对象的实例。

type

可选的。变量的数据类型;可以是 ByteBooleanIntegerLongCurrencySingleDoubleDecimal(目前尚不支持)、DateString(对变长的字符串)、String * length(对定长的字符串)、ObjectVariant用户定义类型对象类型。所声明的每个变量都要有一个单独的 As type 子句。

说明

模块的代码开始运行后,使用 Static 语句声明的变量会一直保持其值,直至该模块复位或重新启动。可以在非静态的过程中使用 Static 语句显式声明只在该过程内可见,但具有与包含该过程定义的模块相同生命期的变量。

可以在过程中使用 Static 语句来声明在过程调用之间仍能保持其值的变量的数据类型。例如,下面的语句声明了一个定长的整型数组:

Static EmployeeNumber(200) As Integer

下面的语句为 worksheet 的新实例声明了一个变量:

Static X As New Worksheet

如果在定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将一个已有的对象赋给这个引用对象的变量。在被赋值之前,所声明的这个对象变量有一个特定值 Nothing,这个值表示该变量没有指向任何对象的实例。若在声明中使用了 New 关键字,则在第一次引用对象时将新建一个该对象的实例。

如果不指定数据类型或对象类型,且在模块中没有使用 Deftype 语句,则按缺省情况,定义该变量为 Variant 类型。

注意 Static 语句与 Static 关键字很相似,但是针对不同的效果来使用的。如果使用 Static 关键字(如 Static Sub CountSales ())来声明一个过程,则该过程中的所有局部变量的存储空间都只分配一次,且这些变量的值在整个程序运行期间都存在。对非静态过程而言,该过程每次被调用时都要为其变量分配存储空间,当该过程结束时都要释放其变量的存储空间。Static 语句则用来在非静态的过程中声明特定的变量,以使其在程序运行期间能保持其值。

在初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。

注意 如果在过程中使用 Static 语句,应和其它的声明语句(如 Dim)一样将其放在过程的开始。

 

Static 语句示例

该示例使用 Static 语句,可以在模块代码运行期间一直保持变量的值。

'函数定义。

Function KeepTotal(Number)

'只有 Accumulate 变量能在调用过程之间保持其值。

Static Accumulate

Accumulate = Accumulate + Number

KeepTotal = Accumulate

End Function'Static 函数定义。

Static Function MyFunction(Arg1, Arg2, Arg3)

'所有局部变量在函数调用之间都能保持其值。

Accumulate = Arg1 + Arg2 + Arg3

Half = Accumulate / 2

MyFunction = Half

End Function

18Unload 语句

从内存中卸载窗体或控件。

语法

Unload object

object 所在处是要卸载的 Form 对象或控件数组元素的名称。

说明

当所占内存另有它用,或需要重新设置窗体、控件的属性为初始值时,就有必要卸载窗体或控件。

在卸载窗体前,会发生 Query_Unload 事件过程,然后是 Form_Unload 事件过程。在其中任一过程中设置 cancel 参数为 True 可防止窗体被卸载。若为 MDIForm 对象,先发生 MDIForm 对象的 Query_Unload 事件过程,接着是各 MDI 子窗体 Query_Unload 事件过程和 Form_Unload 事件过程,最后是 MDIForm 对象的 Form_Unload 事件过程。

当窗体卸载之后,所有在运行时 放到该窗体上的控件都不再是可访问的。在设计时放到该窗体上的控件将保持不变;但是,当窗体重新加载时,在运行时对这些控件及其属性的任何更改将丢失。所有对于窗体属性的更改也将丢失。对窗体上任何控件的访问会导致窗体重新加载。

注意 在卸载窗体时,只有显示的部件被卸载。和该窗体模块相关联的代码还保持在内存中。

只有在运行时添加到窗体上的控件数组元素才能用 Unload 语句卸载。重新加载被卸载的控件时,其属性会被重新初始化。

 

Unload 语句示例

这个示例使用 Unload 语句来卸载 Form 对象。在运行此例前,在 Form 对象的声明部分粘贴以下代码,然后运行此例并单击该 Form 对象。

Private Sub Form_Click ()

Dim Answer, Msg ' 声明变量。

Unload Form1 ' 卸载窗体。

Msg = "Form1 has been unloaded. Choose Yes to load and "

Msg = Msg & "display the form. Choose No to load the form "

Msg = Msg & "and leave it invisible."

Answer = MsgBox(Msg, vbYesNo) ' 获得用户响应。

If Answer = vbYes Then ' 测试应答。

Show ' 如果回答 Yes,则显示窗体。

Else

Load Form1 ' 如果回答 No,仅加载窗体。

Msg = "Form1 is now loaded. Choose OK to display it."

MsgBox Msg ' 显示信息。

Show ' 显示窗体。

End If

End Sub

19While...Wend 语句

只要指定的条件为 True,则会重复执行一系列的语句

语法

While condition

[statements]

Wend

While...Wend 语句的语法具有以下几个部分:

部分

描述

condition

必要参数。数值表达式字符串表达式,其计算结果为 True False。如果 condition Null,则 condition 会视为 False

statements

可选参数。一条或多条语句,当条件为 True 时执行。

说明

如果 condition True,则所有的 statements 都会执行,一直执行到 Wend 语句。然后再回到 While 语句,并再一次检查 condition,如果 condition 还是为 True,则重复执行。如果不为 True,则程序会从 Wend 语句之后的语句继续执行。

While...Wend 循环也可以是多层的嵌套结构。每个 Wend 匹配最近的 While 语句。

提示 Do...Loop 语句提供了一种结构化与适应性更强的方法来执行循环。

 

While...Wend 语句示例

本示例使用 While...Wend 语句来增加计数变量的值。如果条件判断值为 True,则循环内的语句将一直执行下去。

Dim Counter

Counter = 0 ' 设置变量初值。

While Counter < 20 ' 测试计数器的值。

Counter = Counter + 1 ' 将计数器的值加一。

Wend ' Counter > 19 时则循环终止。

Debug.Print Counter ' 立即窗口中显示数字 20

20Write # 语句

将数据写入顺序文件。

语法

Write #filenumber, [outputlist]

Write # 语句的语法具有以下几个部分:

部分

描述

filenumber

必要。任何有效的文件号

outputlist

可选。要写入文件的数值表达式字符串表达式,用一个或多个逗号将这些表达式分界。

说明

通常用 Input # 从文件读出 Write # 写入的数据。

如果省略 outputlist,并在 filenumber 之后加上一个逗号,则会将一个空白行打印到文件中。多个表达式之间可用空白、分号或逗号隔开。空白和分号等效。

Write # 将数据写入文件时将遵循几个通用的约定,使得无论什么国别都可用 Input # 读出并正确解释数据:

在写入数值数据时总使用句号作为十进制分隔符。

对于 Boolean 类型的数据,或者打印 #TRUE# 或者打印 #FALSE#。无论在什么地区,都不将 True False 这两个关键字翻译出来。

使用通用的日期格式 Date 类型的数据写入文件中。当日期或时间的部件丢失或为零时,只将现有部分写入文件中。

如果 outputlist 的数据为 Empty,则不将任何数据写入文件。但对 Null 数据,则要写入 #NULL#

21Select case

根据表达式的值,来决定执行几组语句中的其中之一。

语法

Select Case testexpression

[Case expressionlist-n

[statements-n]] ...

[Case Else

[elsestatements]]

End Select

Select Case 语句的语法具有以下几个部分:

部分

描述

testexpression

必要参数。任何数值表达式或字符串表达式。

expressionlist-n

如果有 Case 出现,则为必要参数。其形式为 expressionexpression To expressionIs comparisonoperator expression的一个或多个组成的分界列表To 关键字可用来指定一个数值范围。如果使用 To 关键字,则较小的数值要出现在 To 之前。使用 Is 关键字时,则可以配合比较运算符(除 Is Like 之外来指定一个数值范围。如果没有提供,则 Is 关键字会被自动插入。

statements-n

可选参数。一条或多条语句,当 testexpression 匹配expressionlist-n中的任何部分时执行。

elsestatements

可选参数。一条或多条语句,当 testexpression 不匹配 Case 子句的任何部分时执行。

说明

如果 testexpression 匹配某个 Case expressionlist 表达式, 则在 Case 子句之后,直到下一个 Case 子句的 statements 会被执行;如果是最后一个子句,则会执行到 End Select。然后控制权会转移到 End Select 之后的语句。如果 testexpression 匹配一个以上的 Case 子句中的 expressionlist 表达式,则只有第一个匹配后面的语句会被执行。

Case Else 子句用于指明 elsestatements,当 testexpression 和所有的 Case 子句中的 expressionlist 都不匹配时,则会执行这些语句。虽然不是必要的,但是在 Select Case 区块中,最好还是加上 Case Else 语句来处理不可预见的 testexpression 值。如果没有 Case expressionlist 匹配 testexpression,而且也没有 Case Else 语句,则程序会从 End Select 之后的语句继续执行。

可以在每个 Case 子句中使用多重表达式或使用范围,例如,下面的语句是正确的:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

注意   Is 比较运算符和使用在 Select Case 语句中的 Is 关键字并不相同。

也可以针对字符串指定范围和多重表达式。在下面的例子中,Case 所匹配的字符串为:等于 everything、按英文字母顺序落入从 nuts soup 之间的字符串、以及 TestItem 所代表的当前值。

Case "everything", "nuts" To "soup", TestItem

Select Case 语句也可以是嵌套的。但每个嵌套的 Select Case 语句必须要有相应的 End Select 语句。

 

Select Case 语句示例

本示例使用 Select Case 语句来判断变量的值。示例中第二个 Case 子句包含了变量值,故只有此区块内的语句会被完成到。

Dim Number

Number = 8 ' 设置变量初值。

Select Case Number ' 判断 Number 的值。

Case 1 To 5 ' Number 的值在 1 5 之间,包含1 5

Debug.Print "Between 1 and 5"

' 下一个 Case 子句是本示例中唯一判断值为 True 的子句。

Case 6, 7, 8 ' Number 的值在 6 8 之间。

Debug.Print "Between 6 and 8"

Case 9 10 ' Number 的值为 9 10

Debug.Print "Greater than 8"

Case Else ' 其他数值。

Debug.Print "Not between 1 and 10"

End Select

免费下载 Word文档免费下载: vb常用语句

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服