VBA全局变量|如何在VBA中声明全局变量?

一些函数在函数内部定义,并在函数内部使用,某些变量在函数外部定义,并由所有函数使用,并且此类变量用作全局变量,例如,在子函数下声明的变量为被称为全局变量。

Excel VBA中的全局变量

声明变量似乎很简单,但是要掌握好这些变量,我们需要了解这些变量的范围。通常,我们每次都会在子过程中为每个宏声明变量。但是通过声明一个变量,我们可以在当前VBA项目的同一模块以及其他模块中的所有宏中使用它。在本文中,我们将向您展示如何在Excel VBA中声明全局变量。

什么是Excel VBA中的全局变量?

VBA全局变量是在模块中任何宏开始之前声明的变量。当使用“公共”或“全局”声明变量时,它将变为“全局变量”。

子过程变量不能在任何地方使用

我们通常在vba的子例程中使用“ Dim”一词来声明变量。

看上面的图片,我已经在子过程Global_Example1内将变量“ k”声明为整数。

如果我们在任何时间点在此Sub过程中使用此变量。但是,无论在VBA的同一类模块中还是在另一个模块中,我都不能在另一个子过程中使用此变量。

如上图所示,在子过程Global_Example2中不能使用在子过程Global_Example1中声明的变量“ k”。

同样,子过程Global_Example2中声明的变量“ j”不能在子过程Global_Example1中使用,即使两个子过程都在同一模块中。

如何在VBA中声明全局变量?

以下是在excel VBA中声明全局变量的方法。

#1 –模块变量可以在同一模块的任何子过程中使用

如我们所见,我们不能在任何模块中使用子过程变量。为了使它们可用于同一模块中的所有Sub过程,我们需要在模块顶部声明变量。

在上图中,我仅在模块的开头声明了变量。我已经在其中将变量“ MyNumber”声明为Integer 模块1.

一旦在模块顶部声明了变量,我们就可以对同一模块中的所有其他Sub过程使用相同的变量,在这种情况下,我们可以对所有Sub过程使用变量“ MyNumber” 单元1。

问题是我们不能在其他任何模块中使用它们。在这种情况下,在 模块1 不能用于 单元2。

 #2 –全局变量可以在任何子过程以及任何模块中使用

现在,我们已经看到了两种变量声明以及它们在使用时的作用域。有趣的是,我们可以在任何一个模块中声明变量,并将其用于同一VBA项目的所有模块中的所有Sub过程。

为了使该变量可用于所有模块中的所有Sub过程,我们需要在模块顶部声明该变量,而不是使用单词“ Dim”,而是使用单词“ Public”或“ Global”。

在上图中,您可以看到我用了这个词 “上市” 声明变量而不是我们的资深单词 “暗淡”。

在上面的屏幕截图中,我已经在中声明了变量 单元1。 我还有两个名为 模块2和模块3。

由于我已经通过在模块顶部使用“ Public”一词来声明了变量,所以现在我可以在同一工作簿的任何模块的任何子过程中访问这些变量。

不仅是“公共”,我们还可以使用“全局”一词来声明变量。

全局和公共是用于声明变量并使它们在VBA中的各个模块中可用的两个关键字。

要记住的事情

  • 一旦excel宏运行了全局变量,则所有Sub过程中的变量值都将相同。
  • 最好维护一个特定的模块以在VBA中声明全局变量,并将所有变量都包含在一个模块中。
  • 重置变量值的唯一方法是通过按停止按钮重置宏代码。