显式声明
为了避免写错变量名引起的麻烦,可以规定,只要遇到一个未经明确声明就当成变量的名字,Visual Basic 都发出错误警告。 要显式声明变量,请
在类模块、窗体模块或标准模块的声明段中加入这个语句:
Option Explicit
-或-
在“工具”菜单中选取“选项”,单击“编辑器”选项卡,再复选“要求变量声明”选项。这样就在任何新模块中自动插入 Option Explicit 语句,但不会在已经建立起来的模块中自动插入;所以在工程内部,只能用手工方法向现有模块添加 Option Explicit。
如果对包含 SafeSqr 函数的窗体或标准模块执行该语句,那么 Visual Basic将认定 TempVal 和 TemVal 都是未经声明变量,并为两者都发出错误信息。随后就可以显式声明 TempVal。
Function SafeSqr (num)
Dim TempVal
TempVal = Abs (num)
SafeSqr = Sqr (TemVal)
End Function
因为 Visual Basic 对拼错了的 TemVal 显示错误信息,所以能够立刻明白是什么问题。由于 Option Explicit 语句有助于抓住这些类型的错误,所以最好在所有代码中使用它。
注意 Option Explicit 语句的作用范围仅限于语句所在模块,所以,对每个需要 Visual Basic 强制显式变量声明的窗体模块、标准模块及类模块,必须将 Option Explicit 语句放在这些模块的声明段中。如果选择“要求变量声明”,Visual Basic 会在后续的窗体模块、标准模块及类模块中自动插入 Option Explicit,但是不会将它加入到现有代码中。必须在工程中通过手工将 Option Explicit 语句加到任何现有模块中。
理解变量的范围
变量的范围确定了能够知晓该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic 允许在声明变量时指定它的范围。
指定变量的有效范围
一个变量在划定范围时被看作是过程级(局部)变量,还是模块级变量,这取决于声明该变量时采用的方式。
过程内部使用的变量
过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。用 Dim 或者 Static 关键字来声明它们。例如:
Dim intTemp As Integer
- 或者 -
Static intPermanent As Integer
在整个应用程序运行时,用 Static 声明的局部变量中的值一直存在,而用Dim 声明的变量只在过程执行期间才存在。
对任何临时计算来说,局部变量是最佳选择。例如,可以建立十来个不同的过程,每个过程都包含称作 intTemp 的变量。只要每个 intTemp 都声明为局部变量,那么每个过程只识别它自己的 intTemp 版本。任何一个过程都能够改变它自己的局部的 intTemp 变量的值,而不会影响别的过程中的intTemp 变量。
模块内部使用的变量
按照缺省规定,模块级变量对该模块的所有过程都可用,但对其它模块的代码不可用。可在模块顶部的声明段用 Private 关键字声明模块级变量,从而建立模块级变量。例如:
Private intTemp As Integer
在模块级,Private 和 Dim 之间没有什么区别,但 Private 更好些,因为很容易把它和 Public 区别开来,使代码更容易理解。
所有模块使用的变量
为了使模块级的变量在其它模块中也有效,用 Public 关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明段来声明公用变量。例如:
Public intTemp As Integer
注意 不能在过程中声明公用变量,只能在模块的声明段中声明公用变量。
详细信息 有关变量的其它信息,请参阅 “高级变量主题”。
高级变量主题
使用多个同名的变量
如果不同模块中的公用变量使用同一名字,则通过同时引用模块名和变量名就可以在代码中区分它们。例如,如果有一个在 Form1 和 Module1 中都声明了的公用 Integer 变量 intX,则把它们作为 Module1.intX 和Form1.intX 来引用便得到正确值。
为了看清这是如何工作的,在一个新工程中插入两个标准模块,并在窗体上画上三个命令按钮。
在第一个标准模块 Module1 之中声明一个变量 intX。Test 过程设置它的值:
Public intX As Integer '声明 Module1 的 intX。
Sub Test ()
'设置 Module1 的 intX 变量的值。
intX = 1
End Sub
在第二个标准模块 Module2 中声明了第二个变量 intX,它有相同的名字。又是名为 Test 的过程设置它的值:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




