vba 变量的作用域分类
变量的作用域,决定可以在哪儿个模块或过程中使用该变量。
按作用域分类,vba中的变量可分为本地变量、模块级变量和公共变量,不同作用域的变量详情如下:
单个过程:
在一个过程中使用Dim 或 Static语句声明的变量,作用域为本过程,即只有声明变量的语句所在的过程可以使用它。这样的变量称为 本地变量。
如果在一个过程中使用Dim或Static语句声明变量,声明的变量即为本地变量。
例:
Sub Test_01() Dim a as String a="我是一个变量" End Sub Sub Test_02() MsgBox a End Sub #由于变量a是在第1个程序中定义的,属于本地变量,VBA不允许我们在其他程序中使用这个变量 会显示 变量未定义 编译错误。
单个模块:(注:1.Dim 和 Private 同时使用 或 只用一个时用Private 2.模块级的变量,各个过程之间的变量值不互相传递,各个过程间该值重新为空值)
在模块的第1个过程之前使用Dim 或 Private 语句声明的变量,作用域为声明变量的语句所在模块的所有过程,即该模块中所有的过程都可以使用它。这样的变量称为 模块级变量。
如果想让同一模块中的所有过程都能使用定义的变量,可以在模块的第1个过程之前使用Dim或Private语句定义变量,这样该模块中所有的过程都可以使用定义的变量。
Option Explicit Dim a as String Private b as String Sub 合并文本() a="我在ExcelHome论坛" b="学习Excel" MsgBox a & b End Sub
所有模块:
在一个模块的第1个过程之前使用Public 语句声明的变量,作用域为所有模块,即所有模块中的过程都可以使用它。这样的变量称为 公共变量。
如果想让不同模块中的过程都能使用声明的变量,应将变量定义为公共变量。
如果要将变量声明为公有变量,应在模块的第1个过程之前用Public语句声明它。
例:
Option Explicit Public c as String
Sub 公有变量() c="我是一个公有变量" End Sub