在Excel VBA一个变量的范围确定其中可使用该变量。你确定变量的作用域当您声明它。

有三个范围级别:过程级,模块级和公共模块级别。

将工作表上的一个命令按钮并添加以下代码行:

Variable Scope Example

1.将两个过程(过程可以是一个子或函数)转换成一个模块。在Visual Basic编辑器,单击插入,模块。添加以下代码行:

Procedure Level Scope in Excel VBA

2.当您单击工作表(拨打电话两个潜艇)上的命令按钮结果:

Procedure Level Scope Result

Procedure Level Scope Result

说明:因为它是在过程(子和End Sub之间)宣布的txt具有范围程序级别的变量。其结果是,你只能在SUB1使用这个变量。可变TXT不能在SUB2使用。

3.当你想要一个变量可用到一个模块中的所有过程,你说你想要的变量有模块级范围。

需要声明的通用声明部分的变量(在模块的顶部)。稍微调整代码如下:

Module Level Scope in Excel VBA

当您单击工作表上的命令按钮4.结果:

Module Level Scope Result

Module Level Scope Result

说明:TXT,现在可以在SUB2中使用的变量。模块级别与私人模块级别可互换使用。这是因为在默认情况下,在通用声明部分Dim语句声明的变量的作用域为私有。您也可以作用域的变量为public。请继续阅读。

5.通过使用公共的关键字,您的变量将提供给在工作簿中的所有模块的所有过程。这就是所谓的公共模块级范围。稍微调整代码如下:

Public Module Level Scope in Excel VBA

说明:现在你可以创建一个新的模块并放置一个名为SUB3到这个模块分。使用相同的代码SUB2。添加SUB3到您的命令按钮的代码。当您单击工作表上的命令按钮,你会得到三个消息框说:“变量只能在此过程中使用”(见下载Excel文件)。