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

 

转载于:https://www.cnblogs.com/zhubinglong/p/7452338.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值