VB编程基础教程4–高级变量主题
如果不同模块中的公用变量使用同一名字,则通过同时引用模块名和变量名就可以在代码中区分它们。例如,如果有一个在 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 的过程设置它的值:
public intx as integer ‘声明了 module2 的 intx。
sub test ()
’设置 module2 的 intx 变量的值。
intx = 2
end sub
在窗体模块中声明了第三个变量 intx。名为 test 的过程又一次设置它的值。
public intx as integer ‘声明了该窗体的 intx 变量。
sub test ()
’ 设置 form 中的 intx 变量值。
intx = 3
end sub
在三个命令按钮的 click 事件过程中,每一个都调用了相应的 test 过程,并用 msgbox 来显示这三个变量的值。
private sub command1_click ()
module1.test ‘ 调用 module1 中的 test。
msgbox module1.intx ’ 显示 module1 的 intx。
end sub
private sub command2_click ()
module2.test ‘ 调用 module2 中的 test。
msgbox module2.intx ’ 显示 module2 的 intx。
end sub
private sub command3_click ()
test ‘ 调用 form1 中的 test。
msgbox intx ’ 显示 form1 的 intx。
end sub
运行应用程序,单击三个命令按钮中的每一个按钮。于是将看到三个公用变量被分别引用。注意在第三个命令按钮的 click 事件过程中,在调用 form1 的 test 过程时不必指定 form1.test,在调用 form1 的 integer 变量的值时也不必指定 form1.intx 。如果多个过程或变量同名,则 visual basic 会取变化更受限制的值,在这个例子中,就是 form1 变量。
公用变量与局部变量的比较
在不同的范围内也可有同名的变量。例如,可有名为 temp 的公用变量,然后在过程中声明名为 temp 的局部变量。在过程内通过引用名字 temp 来访问局部变量;而在过程外则通过引用名字 temp 来访问公用变量。通过用模块名限定模块级变量就可在过程内访问这样的变量。
public temp as integer
sub test ()