变量的作用域指的是变量的有效范围。为了能正确地使用变量的值,应当明确可以在程序的什么地方访问该变量。VB中变量可以分为3类:局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。各变量位于不同的层次。
局部变量
过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。
用Dim或者Static关键字来声明它们,两者的区别在于:在整个应用程序运行时,用Static声明的局部变量中的值一直存在,而用Dim声明的变量只在过程执行期间才存在。
对任何临时计算来说,局部变量是最佳选择。例如,可以建立十来个不同的过程,每个过程都包含称作intTemp的变量(同一个变量名在不同的过程中意义可能不同)。只要每个intTemp都声明为局部变量,那么每个过程只识别它自己的intTemp版本。任何一个过程都能够改变它自己的局部的intTemp变量的值,而不会影响别的过程中的intTemp变量。
模块变量
按照缺省规定,模块级变量对该模块的所有过程都可用,但对其它模块的代码不可用。可在模块顶部的声明段用Private或Dim关键字声明模块级变量,从而建立模块级变量。例如:
Private intTemp As Integer
在模块级,Private和Dim之间没有什么区别,但Private更好些,因为很容易把它和Public区别开来,使代码更容易理解。
全局变量
为了使模块级的变量在其它模块中也有效,用Public关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明段来声明公用变量。例如
Public intTemp As Integer
注意:不能在过程中声明公用变量,只能在模块的声明段中声明公用变量。
总结以上可知:声明语句有如下四种格式,这四种语句创建了不同特性的变量,下面来作详细的介绍:
(I)Dim语句,其格式为:
Dim<变量名>[As<数据类型>]
程序运行时,上述声明在内存中为变量分配空间,并使Visual Basic了解随后要处理数据的数据类型。
Dim语句用于在标准模块(Module)、窗体模块(Form)或过程(Procedure)中定义变量或数组
用Dim语句在窗体的过程中声明的变量称为局部变量,其作用域仅局限在本过程内部,过程一旦执行完毕,其值也就消失了。
例如
Dim Number As Integer'声明Number为Integer(整型)变量。
Dim I As Integer,j As Integer,k As Integer'同时声明为整型变量。
Dim AnyValue,MyValue'AnyValue和MyValue按缺省情况被声明为Variant类型,同时值被设为Empty(空)。
Dim AnotherVar, Choice As Boolean, BirthDate As Date'在一行中声明多种类型变量,AnotherVar为Variant类型,因为它的类型被省略了,Choice为布尔型变量,BirthDate为日期型变量。
(2)Private语句.其格式为:
Private<变量名>[As<数据类型>]
如果要在一个窗体模块的所有过程中共享同一个变量,则应在这个窗体模块的声明段用Private语句进行声明.这种变量称为模块级变量,其作用域为整个窗体模块。这就好比是您家里的电话号码,它在您所在的城市是通用的,但出了这个范围就不能单独使用了。
(3)Public语句,其格式为:
Public<变量名>[As<数据类型>
]
用来在标准模块中定义全局变量或数组。如果在标准模块的声明段中用Public关键字来声明模块级变量,那么这个变量的作用域是整个工程,即它会在整个工程的所有模块中有效,这种变量称为全局变量,也称公用变量。这就好比是加了邮政区号的电话号码,在全国范围内通用。
(4)static语句.其格式为:
static<变量名>[As<数据类型>·
局部变量在过程执行结束后其值不能被保留下来,在每一次过程重新执行时,变量会被重新初始化。如果希望在该过程结束之后,还能继续保持过程中局部变量的值,就应该用static关键字将这个变量声明为静态变量。这样,即使过程结束,该静态变量的值也仍然保留着。
例如我们可以为一个窗体编写下面这样一程序,可以对用户在窗体上单击的次数计数并用显示出来。
Private Sub Form_click()
Static
I As IntegerI = I + 1Label1.Caption = IEnd Sub
再如:
Private Sub Command1_Click()
Static IntCount As IntegerIntCount = IntCount + 1Select Case IntCountCase 1Command1.Caption = "春眠不觉晓"Case 2Command1.Caption = "处处闻啼鸟"Case 3Command1.Caption = "夜来风雨声"Case ElseCommand1.Caption = "花落知多少"IntCount = 0End Select
End Sub
将Static换成Dim,运行一下,连续单击窗体,两者结果的不同显而易见。
注意:就像在过程中不能使用Public和Private关键字一样,在模块的声明段中不能使用static关键字,会报错。
定义完变量,初值的问题:
整数:0
浮点数:0.0
字符串:""
Variant:Empty(保留字,关键字)不同与null,0,Nothing
判断它有没有赋值,就看它的值是不是empty