版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Vb常用语句解析下面10条语句是最常用的语句,将指针移到上面按ctrl键单击可查看用法:包括功能、语法、参数、举例等。1、Let(赋值语句即=)3、Dim语句7、If.Then.Else 语句21、Select case6、For.Next 语句19、While.Wend 语句15、Randomize 语句16、Rem 语句17、Static 语句18、Unload 语句1、Let(赋值语句即=)功能:将表达式的值赋给变量或属性。语法 varname = expression 语句的语法包含下面部分:部分描述可选的。显式使用 关键字也是一种格式,但通常都省略该关键字。varname必需的。变量
2、或属性的名称;遵循标准变量命名约定。expression必需的。赋给变量或属性的值。2、call语句将控制权转移到一个 Sub 过程,Function 过程,或动态连接库 (DLL)过程。语法 name argumentlist 语句的语法具有以下几个部分:部分描述可选参数;关键字。如果指定了这个关键字,则 argumentlist 必须加上括号,例如: MyProc(0)name必要参数,要调用的过程名称。argumentlist说明调用一个过程时,并不一定要使用 关键字。如果使用 关键字来调用一个需要参数的过程,argumentlist 就必须要加上括号。如果省略了 关键字,那么也必须要省
3、略 argumentlis 外面的括号。如果使用 语法来调用内建函数或用户定义函数,则函数的返回值将被丢弃。若要将整个数组传给一个过程,使用数组名,然后在数组名后加上空括号。3、Dim语句声明变量并分配存储空间。语法 WithEvents varname(subscripts) As New type , WithEvents varname(subscripts) As New type . . . 语句的语法包含下面部分:部分描述WithEvents可选的。关键字,说明 varname 是一个用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用 WithEv
4、ents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。varname必需的。变量的名称;遵循标准的变量命名约定。subscripts可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:lower To upper , lower To upper . . .如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有使用 Option Base 语句,则下界为 0。New可选的。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一
5、次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。type可选的。变量的数据类型;可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length (对定长的字符串)、Object、Variant、用户定义类型、或对象类型。所声明的每个变量都要一个单独的 As type 子句。说明在模块级别中用 声明的变量,对该模块中的所有
6、过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。可以使用 语句在模块级或过程级中声明变量的数据类型。例如,下面的语句声明了 Integer 类型的变量。 NumberOfEmployees As Integer也可以使用 语句来声明变量的对象类型。下面的语句为工作表的新建实例声明了一个变量。 X As New Worksheet如果定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将该引用对象的变量赋值为一个已有对象。在该变量被赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任一个对象实例。也可以使用带空圆括号的 语句
7、来定义动态数组。在定义动态数组后,可以在过程内使用 ReDim 语句来定义该数组的维数和元素。如果试图在 Private,Public 或 语句中重新定义一个已显式定义了大小的数组的维数时,就会发生错误。如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。注意 当在过程中使用 语句时,通常将
8、语句放在过程的开始处。4、Dim 语句示例该示例演示使用 Dim 语句来声明变量,也演示了用 Dim 语句来声明数组。数组的缺省下界为 0,可以在模块级使用 Option Base 语句来取代数组的缺省下界。'AnyValue 和 MyValue 按缺省情况被声明为 Variant,'同时值被设为 Empty。Dim AnyValue, MyValue'显式声明一个 Integer 类型的变量。Dim Number As Integer'在一行中声明多个变量。AnotherVar 为 Variant 类型,'因为它的类型被省略了。Dim AnotherV
9、ar, Choice As Boolean, BirthDate As Date'DayArray 是一个有 51 个索引(从 0 到 50)元素的 Variant 数组,'假设在当前模块中 Option Base 被设为 0(缺省设置)。Dim DayArray(50)'Matrix 是一个二维 Integer 数组。Dim Matrix(3, 4) As Integer'MyMatrix 是一个显式指定了上下界'的三维 double 数组。Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double'Birth
10、Day 是一个索引从 1 到 10 的 date 数组。Dim BirthDay(1 To 10) As Date 'MyArray 是一个 variant 动态数组。5、Exit 语句示例退出 Do.Loop、For.Next、Function、Sub 或 Property 代码块。语法 Do For Function Property Sub 语句的语法有以下几种形式:语句描述 Do提供一种退出 Do.Loop 循环的方法,并且只能在 Do.Loop 循环中使用。 Do 会将控制权转移到 Loop 语句之后的语句。当 Do 用在嵌套的 Do.Loop 循环中时, Do 会将控制权转
11、移到 Do 所在位置的外层循环。 For提供一种退出 For 循环的方法,并且只能在 For.Next 或 For Each.Next 循环中使用。 For 会将控制权转移到 Next 之后的语句。当 For 用在嵌套的 For 循环中时, For 将控制权转移到 For 所在位置的外层循环。 Function立即从包含该语句的 Function 过程中退出。程序会从调用 Function 的语句之后的语句继续执行。 Property立即从包含该语句的 Property 过程中退出。程序会从调用 Property 过程的语句之后的语句继续执行。 Sub立即从包含该语句的 Sub 过程中退出。程
12、序会从调用 Sub 过程的语句之后的语句继续执行。说明不要将 语句与 End 语句搞混了。 并不说明一个结构的终止。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,退出
13、 For.Next 循环。 Case 29: Exit Do ' 如果是 29,退出 Do.Loop 循环。 Case 54: Exit Sub ' 如果是 54,退出子过程。 End Select Next I LoopEnd Sub6、For.Next 语句以指定次数来重复执行一组语句。For.Next语法 counter = start To end Step stepstatementsExit statements counter 语句的语法具有以下几个部分:部分描述counter必要参数。用做循环计数器的数值变量。这个变量不能是布尔或数组元素。start必要参数。c
14、ounter 的初值。End必要参数,counter 的终值。Step可选参数。counter 的步长。如果没有指定,则 step 的缺省值为 1。Statements可选参数。放在 和 之间的一条或多条语句,它们将被执行指定的次数。说明step 参数可以是正数或负数。step 参数值决定循环的执行情况,如下所示:值循环执行,如果正数或 0counter <= end负数counter >= end当所有循环中的语句都执行后,step 的值会加到 counter 中。此时,循环中的语句可能会再次执行(基于循环开始执行时同样的测试),也可能是退出循环并从 语句之后的语句继续执行。提示
15、 在循环中改变 counter 的值,将会使程序代码的阅读和调试变得更加困难。循环中可以在任何位置放置任意个 Exit 语句,随时退出循环。 Exit 经常在条件判断之后使用,例如 If.Then,并将控制权转移到紧接在 之后的语句。可以将一个 循环放置在另一个 循环中,组成嵌套循环。不过在每个循环中的 counter 要使用不同的变量名。下面的体系结构是正确的: I = 1 To 10 J = 1 To 10 K = 1 To 10 . K J I注意 如果省略 语句中的 counter,就像 counter 存在时一样执行。但如果 语句在它相对应的 语句之前出现,则会产生错误。For.Ne
16、xt 语句示例本示例使用 For.Next 语句创建一个字符串,其内容为由 0 到 9 的十个数字所组成的字符串,每个字符串之间用空格隔开。外层循环使用一个变量当作循环计数器,每循环一次,变量值减一。Dim Words, Chars, MyStringFor Words = 10 To 1 Step -1 ' 建立 10 次循环。 For Chars = 0 To 9 ' 建立 10 次循环。 MyString = MyString & Chars ' 将数字添加到字符串中。 Next Chars ' Increment counter MyString
17、 = MyString & " " ' 添加一个空格。Next Words7、If.Then.Else 语句根据表达式的值有条件地执行一组语句。语法 condition statements elsestatements或者,可以使用块形式的语法: condition statementsElseIf condition-n elseifstatements .elsestatementsEnd . 语句的语法具有以下几个部分:部分描述condition必要参数。一个或多个具有下面两种类型的表达式:数值表达式或字符串表达式,其运算结果为 True 或 Fal
18、se。如果 condition 为 Null,则 condition 会视为 False。TypeOf objectname Is objecttype 形式的表达式。其中的 objectname 是任何对象的引用,而 objecttype 则是任何有效的对象类型。如果 objectname 是 objecttype 所指定的一种对象类型,则表达式为 True,否则为False。statements在块形式中是可选参数;但是在单行形式中,且没有 子句时,则为必要参数。一条或多条以冒号分开的语句,它们在 condition 为 True 时执行。8、Input # 语句从已打开的顺序文件中读出数
19、据并将数据指定给变量。语法 #filenumber, varlist # 语句的语法具有以下几个部分:部分描述filenumber必要。任何有效的文件号。varlist必要。用逗号分界的变量列表,将文件中读出的值分配给这些变量;这些变量不可能是一个数组或对象变量。但是,可以使用变量描述数组元素或用户定义类型的元素。说明通常用 Write # 将 # 语句读出的数据写入文件。该语句只能用于以 或 Binary 方式打开的文件。在读出数据时不经修改就可直接将标准的字符串或数值数据指定给变量。下表说明如何处理其它输入数据:数据指定给变量的值分隔逗号或空白行Empty#NULL#Null#TRUE#
20、or #FALSE#True 或 False#yyyy-mm-dd hh:mm:ss#用表达式表示的日期与/或时间#ERROR errornumber#errornumber(此变量是一个 Variant,用来标记错误)输入数据中的双引号符号 (" ") 将被忽略。文件中数据项目的顺序必须与 varlist 中变量的顺序相同,而且与相同数据类型的变量匹配。如果变量为数值类型而数据不是数值类型,则指定变量的值为零。在输入数据项目时,如果已到达文件结尾,则会终止输入,并产生一个错误。注意 为了能够用 # 语句将文件的数据正确读入到变量中,在将数据写入文件时,要使用 Write
21、# 语句而不使用 Print # 语句。使用 Write # 语句可以确保将各个单独的数据域正确分隔开。9、Input # 语句示例本示例使用 Input # 语句将文件内的数据读入两个变量中。本示例假设 TESTFILE文件内含数行以 Write # 语句写入的数据;也就是说,每一行数据中的字符串部分都是用双引号括起来,而与数字用逗号隔开,例如,("Hello", 234)。Dim MyString, MyNumberOpen "TESTFILE" For Input As #1 ' 打开输入文件。Do While Not EOF(1)
22、9; 循环至文件尾。 Input #1, MyString, MyNumber ' 将数据读入两个变量。 Debug.Print MyString, MyNumber ' 在立即窗口中显示数据。LoopClose #1 ' 关闭文件。10、Load 语句把窗体或控件加载到内存中。语法 objectobjec 所在处是要加载的 Form 对象、MDIForm 对象或控件数组元素的名称。说明除非在加载窗体时不需要显示窗体,否则对于窗体不需要使用 语句。在窗体还未被加载时,对窗体的任何引用(在 Set 或 If.TypeOf 语句以外)会自动加载该窗体。例如,Show 方法在
23、显示窗体前会先加载它。一旦窗体被加载,不管它是否可见,它的属性及控件会被应用程序所改变。在某些情况下,也许需要在初始化时加载所有的窗体并在以后需要它们的时候显示它们。当 Visual Basic 加载 Form 对象时,先把窗体属性设置为初始值,再执行 事件过程。当应用程序开始运行时,Visual Basic 自动加载并显示应用程序的启动窗体。在加载 MDIChild 属性为 True 的 Form(换言之,子窗体)时,而此时 MDIForm 还未被加载,那么会在子窗体前自动加载 MDIForm。因为 MDI 子窗体不能被隐藏起来,所以在 Form_ 事件过程结束时马上可以见到 MID 子窗体
24、。由 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 &
25、quot; 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
26、 loaded. Choose OK to display it." MsgBox Msg ' 显示消息。 Show ' 显示窗体。 End IfEnd Sub11、Mid 语句在一 Variant (String) 变量中以另一个字符串中的字符替换其中指定数量的字符。语法(stringvar, start, length) = string 语句的语法具有下面几个部分:部分描述stringvar必要参数。被更改的字符串变量名。start必要参数;Variant (Long)。stringvar 中被替换的字符开头位置。length可选参数;Variant (Long
27、)。被替换的字符数。如果省略,string将全部用上。string必要参数。字符串表达式,替换部分 stringvar 的字符串。说明被替换的字符数量总是小于或等于 stringvar 的字符数。注意 MidB 语句作用于包含在字符串中的字节数据。在 MidB 语句中,start 指定 stringvar 中被替换的字节开头位置,而 length 为替换的字节数。Mid 语句示例本示例使用 Mid 语句将某字符串中的几个字符替换为其他的字符。Dim MyStringMyString = "The dog jumps" ' 设置字符串初值。Mid(MyString,
28、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
29、 duc jumpe"。12、Open 语句能够对文件输入/输出 (I/O)。语法 pathname For mode Access access lock As #filenumber Len=reclength 语句的语法具有以下几个部分:部分描述pathname必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。mode必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。access可选。关键字,说明打开的文件可以进行的操作,有 Read、Writ
30、e、或 Read Write 操作。lock可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。filenumber必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。reclength可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。说明对文件做任何 I/O 操作之前都必须先打开文件。 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。
31、如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。13、Open 语句示例本示例示范 Open 语句的不同用法来做到文件的输
32、出与输入。下列代码以顺序输入模式打开 TESTFILE 文件。Open "TESTFILE" For Input As #1' 若要以其他方式打开文件,必需先关闭此文件。Close #1下列代码以只允许写操作的二进制方式打开文件。Open "TESTFILE" For Binary Access Write As #1' 若要以其他方式打开文件,必需先关闭此文件。Close #1下列代码以随机方式打开文件,文件中含有用户自定义数据类型 Record 的记录。Type Record ' 定义用户自定义数据类型。 ID As Inte
33、ger Name As String * 20End TypeDim MyRecord As Record ' 声明变量。Open "TESTFILE" For Random As #1 Len = Len(MyRecord)' 若要以其他方式打开文件,必需先关闭此文件。Close #1下列代码以顺序输出方式打开文件;任何过程都可以读写该文件。Open "TESTFILE" For Output Shared As #1' 若要以其他方式打开文件,必需先关闭此文件。Close #1下列代码以只允许读的二进制方式打开文件;其他过程不
34、可以读该文件。Open "TESTFILE" For Binary Access Read Lock Read As #114、Print # 语句将格式化显示的数据写入顺序文件中。语法 #filenumber, outputlist # 语句的语法具有以下几个部分:部分描述filenumber必要。任何有效的文件号。outputlist可选。表达式或是要打印的表达式列表。设置outputlist 参数的设置如下:Spc(n) | Tab(n) expression charpos设置描述Spc(n)用来在输出数据中插入空白字符,而 n 指的是要插入的空白字符数。Tab(n
35、)用来将插入点定位在某一绝对列号上,这里,n 是列号。使用无参数的 Tab 将插入点定位在下一个打印区的起始位置。expression要打印的数值表达式或字符串表达式。charpos指定下一个字符的插入点。使用分号将插入点定位在上一个显示字符之后。用 Tab(n) 将插入点定位在某一绝对的列号上,用无参数的 Tab 将插入点定位在下一个打印区的起始处。如果省略 charpos,则在下一行打印下一个字符。说明通常用 Line Input # 或 Input 读出 # 在文件中写入的数据。如果省略参数 outputlist,而且,filenumber 之后只含有一个列表分隔符,则将一空白行打印到文
36、件中。多个表达式之间可用一个空白或一个分号隔开。空白与分号等效。对于 Boolean 类型的数据,打印的是 True 或 False。无论在什么国别,都不将 True 和 False 这两个关键字翻译出来。使用操作系统所能够辨认的标准短日期格式可将 Date 类型的数据写入文件中。在未指定日期或时间部件或这些部件的设置为零时,只将指定的部分写入文件中。如果 outputlist 的数据是 Empty,则不将任何数据写入文件。但是,如果 outputlist 的数据是 Null,则将 Null 写入文件。对于 Error 类型的数据而言,输出的数据看起来与 Error errorcode 一样。
37、而且无论在什么地区,都不将 Error 关键字翻译出来。用 # 写入文件的所有数据都是国际通用的;也就是说,可以正确利用十进制分隔符将这些数据格式化。因为 # 将数据的图像写入文件,所以必须将各项数据分隔开来,以便正确打印。如果使用无参数的 Tab 将打印位置移动到下一个打印区,则 # 也会将打印字段之间的空白写入文件中。注意 如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 # 语句将数据写入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都
38、被正确读出。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" ; " &qu
39、ot; ; "World" ' 以空格隔开两个字符串。Print #1, Spc(5) ; "5 leading spaces " ' 在字符串之前写入五个空格。Print #1, Tab(10) ; "Hello" ' 将数据写在第十列。' 赋值 Boolean、Date、Null 及 Error 等。Dim MyBool, MyDate, MyNull, MyErrorMyBool = False : MyDate = #February 12, 1969# : MyNull = NullMyErr
40、or = CVErr(32767)' True、False、Null 及 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 ' 关闭文件。15、Ra
41、ndomize 语句初始化随机数生成器。语法 number可选的 number 参数是 Variant 或任何有效的数值表达式。说明 用 number 将 Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。如果没有使用 ,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。注意 若想得到重复的随机数序列,在使用具有数值参数的 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 是不会得到重复的随机数序列的。Randomize 语句示例本示例用 Randomize 语句初始
42、化随机数生成器。由于忽略了数值参数, 所以 Randomize 用 Timer 函数的返回值作为新的随机数种子值。Dim MyValueRandomize ' 对随机数生成器做初始化的动作。MyValue = Int(6 * Rnd) + 1) ' 生成 1 到 6 之间的随机数值。16、Rem 语句用来在程序中包含注释。语法 comment也可以使用如下语法:' commentcomment 参数是可选的,指要包括的任何注释文本。在 关键字与 comment 之间要加一个空格。说明如果使用行号或行标签,则可以从 GoTo 或 GoSub 语句转到一个 </fon
43、 17、Static 语句在过程级别中使用,用于声明变量并分配存储空间。在整个代码运行期间都能保留使用 语句声明的变量的值。语法 varname(subscripts) As New type , varname(subscripts) As New type . . . 语句的语法包含下面部分:部分描述varname必需的。变量的名称;遵循标准变量命名约定。subscripts可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:lower To upper ,lower To upper . . .如果不显式指定 lower,则数组的下界由 O
44、ption Base 语句控制。如果没有 Option Base 语句则下界为 0。New可选的。用它可以隐式地创建对象的关键字。如果使用 New 声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来对该对象引用赋值。New 关键字不能用来声明任何内部数据类型的变量,也不能用来声明从属对象的实例。type可选的。变量的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length(对定长的字符串)、Obje
45、ct、Variant、用户定义类型或对象类型。所声明的每个变量都要有一个单独的 As type 子句。说明模块的代码开始运行后,使用 语句声明的变量会一直保持其值,直至该模块复位或重新启动。可以在非静态的过程中使用 语句显式声明只在该过程内可见,但具有与包含该过程定义的模块相同生命期的变量。可以在过程中使用 语句来声明在过程调用之间仍能保持其值的变量的数据类型。例如,下面的语句声明了一个定长的整型数组: EmployeeNumber(200) As Integer下面的语句为 worksheet 的新实例声明了一个变量: X As New Worksheet如果在定义对象变量时没有使用 New
46、 关键字,则在使用该变量之前,必须使用 Set 语句将一个已有的对象赋给这个引用对象的变量。在被赋值之前,所声明的这个对象变量有一个特定值 Nothing,这个值表示该变量没有指向任何对象的实例。若在声明中使用了 New 关键字,则在第一次引用对象时将新建一个该对象的实例。如果不指定数据类型或对象类型,且在模块中没有使用 Deftype 语句,则按缺省情况,定义该变量为 Variant 类型。注意 语句与 关键字很相似,但是针对不同的效果来使用的。如果使用 关键字(如 Sub CountSales ())来声明一个过程,则该过程中的所有局部变量的存储空间都只分配一次,且这些变量的值在整个程序运
47、行期间都存在。对非静态过程而言,该过程每次被调用时都要为其变量分配存储空间,当该过程结束时都要释放其变量的存储空间。 语句则用来在非静态的过程中声明特定的变量,以使其在程序运行期间能保持其值。在初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。注意 如果在过程中使用 语句,应和其它的声明语句(如 Dim)一样将其放在过程的开始。Static 语句示例该示例使用 Static 语句,可以在模块代码运行期间
48、一直保持变量的值。'函数定义。Function KeepTotal(Number) '只有 Accumulate 变量能在调用过程之间保持其值。 Static Accumulate Accumulate = Accumulate + Number KeepTotal = AccumulateEnd Function'Static 函数定义。Static Function MyFunction(Arg1, Arg2, Arg3) '所有局部变量在函数调用之间都能保持其值。 Accumulate = Arg1 + Arg2 + Arg3 Half = Accumul
49、ate / 2 MyFunction = HalfEnd Function18、Unload 语句从内存中卸载窗体或控件。语法 objectobject 所在处是要卸载的 Form 对象或控件数组元素的名称。说明当所占内存另有它用,或需要重新设置窗体、控件的属性为初始值时,就有必要卸载窗体或控件。在卸载窗体前,会发生 Query_ 事件过程,然后是 Form_ 事件过程。在其中任一过程中设置 cancel 参数为 True 可防止窗体被卸载。若为 MDIForm 对象,先发生 MDIForm 对象的 Query_ 事件过程,接着是各 MDI 子窗体 的 Query_ 事件过程和 Form_ 事
50、件过程,最后是 MDIForm 对象的 Form_ 事件过程。当窗体卸载之后,所有在运行时 放到该窗体上的控件都不再是可访问的。在设计时放到该窗体上的控件将保持不变;但是,当窗体重新加载时,在运行时对这些控件及其属性的任何更改将丢失。所有对于窗体属性的更改也将丢失。对窗体上任何控件的访问会导致窗体重新加载。注意 在卸载窗体时,只有显示的部件被卸载。和该窗体模块相关联的代码还保持在内存中。只有在运行时添加到窗体上的控件数组元素才能用 语句卸载。重新加载被卸载的控件时,其属性会被重新初始化。Unload 语句示例这个示例使用 Unload 语句来卸载 Form 对象。在运行此例前,在 Form 对
51、象的声明部分粘贴以下代码,然后运行此例并单击该 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.&qu
52、ot; 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 IfEnd Sub19、While.Wend 语句 只要指定的条件为 True,则会重复执
53、行一系列的语句。语法 conditionstatements 语句的语法具有以下几个部分:部分描述condition必要参数。数值表达式或字符串表达式,其计算结果为 True 或 False。如果 condition 为 Null,则 condition 会视为 False。statements可选参数。一条或多条语句,当条件为 True 时执行。说明如果 condition 为 True,则所有的 statements 都会执行,一直执行到 语句。然后再回到 语句,并再一次检查 condition,如果 condition 还是为 True,则重复执行。如果不为 True,则程序会从 语句之
54、后的语句继续执行。 循环也可以是多层的嵌套结构。每个 匹配最近的 语句。提示 Do.Loop 语句提供了一种结构化与适应性更强的方法来执行循环。While.Wend 语句示例本示例使用 While.Wend 语句来增加计数变量的值。如果条件判断值为 True,则循环内的语句将一直执行下去。Dim CounterCounter = 0 ' 设置变量初值。While Counter < 20 ' 测试计数器的值。 Counter = Counter + 1 ' 将计数器的值加一。Wend ' 当 Counter > 19 时则循环终止。Debug.Pri
55、nt Counter ' 在“立即”窗口中显示数字 20。20、Write # 语句 将数据写入顺序文件。语法 #filenumber, outputlist # 语句的语法具有以下几个部分:部分描述filenumber必要。任何有效的文件号。outputlist可选。要写入文件的数值表达式或字符串表达式,用一个或多个逗号将这些表达式分界。说明通常用 Input # 从文件读出 # 写入的数据。如果省略 outputlist,并在 filenumber 之后加上一个逗号,则会将一个空白行打印到文件中。多个表达式之间可用空白、分号或逗号隔开。空白和分号等效。用 # 将数据写入文件时将遵循几个通用的约定,使得无论什么国别都可用 Input # 读出并正确解释数据: · 在写入数值数据时总使用句号作为十进制分隔符。· 对于 Boolean 类型的数据,或者打印 #TRUE# 或者打印 #FALSE#。无论在什么地区,都不将 True 和 False 这两个关键字翻译出来。· 使用通用的日期格式将 Date 类型的数据写入文件中。当日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年信用贷款协议书示例文稿
- 2024年协议主体替换协议文件
- 独家房产贷款居间服务协议电子
- 南京信息工程大学《自然地理学》2021-2022学年第一学期期末试卷
- 2024年产品销售法定中文协议范本
- 代理记账代办合同模板
- 智能音箱的智能音质与智慧家居考核试卷
- 橡胶制品的市场推广与产品包装考核试卷
- 仪器仪表制造业的企业战略规划与发展路径考核试卷
- 仪器仪表制造企业的社会责任与可持续发展考核试卷
- 中图版七年级下册信息技术 4.1策划数字故事 教学设计
- 2024年全国职业院校技能大赛高职组(检验检疫技术赛项)考试题库(含答案)
- 和灯做朋友(教学设计)-2023-2024学年五年级上册综合实践活动蒙沪版
- 乐理知识考试题库130题(含答案)
- 人教版(2024)七年级地理上册2.2《地形图的判读》精美课件
- 2024年共青团入团积极分子团校结业考试试题库及答案
- 2024年辽宁高考历史试题(含答案和解析)
- 黄河商品交易市场介绍稿
- Unit 3 My friends Part C Story time(教学设计)-2024-2025学年人教PEP版英语四年级上册
- 2024中国海油校园招聘2024人(高频重点提升专题训练)共500题附带答案详解
- 孙中山诞辰纪念日主题班会主题班会
评论
0/150
提交评论