变量作用域
Posted iZJ|QQ4577105
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量作用域相关的知识,希望对你有一定的参考价值。
过程作用域
在过程或函数内部声明的变量,只有在当前过程或函数内被使用。例如:
Sub Test()
Dim name As String
Dim age As Integer
name = "张三"
age = 35
End Sub
它们只能在该过程中内使用,包括赋值和读取。如果尝试在外部和其他过程中直接使用它们,VBA 会提示变量未定义错误。
模块作用域
在一个模块中,在任何一个过程和函数外面,使用关键词 Private
或 Dim
声明的变量,称之为模块变量,其作用域是当前模块。例如,在一个子过程的外面用Dim定义变量等效于Public ,例如:
Dim guest As String //等同于Public guest As String
Sub Test()
Dim message As String
guest = "张三"
message = "你好"
MsgBox message & "! " & guest
End Sub
模块变量的作用域是当前模块,在模块里面任何过程和函数内均可以使用。
工程作用域
Excel VBA 中,一个 Excel 工作簿是一个 VBA 工程。与之对应,工程作用域表示变量在当前工程中的模块、Excel 对象、用户窗体、类模块中均可以被使用。
工程级别变量,在所在模块顶部声明 Option Private Module
修饰语句前提下,在过程或函数外面,使用关键词 Public
声明的变量,其作用域是当前工程。例如,
Option Private Module
Public guest As String
Sub Test()
Dim message As String
guest = "张三"
message = "你好"
MsgBox message & "! " & guest
End Sub
以上例子中,变量 guest
是使用 Public
关键词声明,是工程级别变量。它在当前工程中其他的模块中也能被使用。
Tips:当相同名称的变量,多次以不同的作用域声明时,出现作用域冲突。这种情况,VBA 会自动以就近原则使用变量,即优先使用最近定义的变量。
作者QQ4577105
以上是关于变量作用域的主要内容,如果未能解决你的问题,请参考以下文章