vba中变量作用域

Posted 猪冰龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba中变量作用域相关的知识,希望对你有一定的参考价值。

 


全局变量例子
public 变量1 AS Integer
Sub LLL()
变量1 = 1111
End Sub


模块级变量例子
DIM 变量1 AS Integer
Sub LLL()
变量1 = 1111
End Sub

我有a、b、c三个宏模块,每个里面都有一个变量 dim sj as date, 这三个模块使用时都会调用另外一个模块d模块,怎么才能a、b、c每个模块调用d模块时,都能把变量sj传递到d模块呢?

我现在a模块sub 上面最上一行 写上Public sj As Date 后,a模块运行sj变量可以传递到d模块
当我把a、b、c每个模块sub上面最上一行都加上Public sj As Date 后,每个模块运行到d模块后,就会出错,提示:发现二义性名称

请问各位老师,该怎么弄才能让a、b、c三个模块sj变量都能传递到d模块呢?


最后总算解决了:abc三个模块,不管哪个模块,运不运行,只需在任意一个(也只能一个)上面加个全局变量 Pablic就可以了

我是2个以上模块都加了相同的全局变量出问题的。


模块级变量应该放在本模块的最上端,不是在过程中,下面两句会出错
Dim x As String
x = "user"

如果该模块为标准模块,可以这样试试:

Dim x As String

Sub auto_open() ‘打开工作簿自动运行
    x = "user"
End Sub

Sub abc()
    MsgBox x
End Sub

 

以上是关于vba中变量作用域的主要内容,如果未能解决你的问题,请参考以下文章

Python变量作用域

变量的作用域

JS块级作用域和私有变量实例分析

JavaScript 作用域作用域链变量提升

JavaScript 作用域作用域链变量提升

js 静态作用域和动态作用域