【发布时间】:2014-03-15 09:52:55
【问题描述】:
是否可以在一个过程中声明一个静态变量,并使用 Excel VBA 在多个不同的过程中使用该变量?
即
Public myvar as integer
Sub SetVar()
static myvar as integer
myvar=999
end sub
sub Usevar()
dim newvar as integer
newvar=myvar*0.5
end sub
我需要 myvar 被其他程序看到,而不是改变或“丢失”。如果 myvar 未声明为静态变量,则上面的代码有效,但更多代码则变量“丢失”。如果使用静态声明,则 usevar 过程看不到 myvar。并且 VBA 不接受“Public Static myvar as integer”。
感谢您的帮助
宙斯
【问题讨论】:
-
全局变量始终是静态的,因为它保持其值,除非代码执行停止。如果这就是您想要静态变量的原因,那么请使用全局变量。
-
蒂姆,感谢您编辑我的帖子和您的回答。我要做的就是在一个模块的几个过程中初始化几个集合,然后在另一个模块的几个过程中使用这些集合。将它们声明为 Public 有帮助,但我现在有运行时错误 91 对象变量或未设置块变量,我不知道为什么。代码似乎运行正常,直到代码执行停止或代码更改。有没有像使用 set 语句一样让它更健壮?
-
我通过在每次运行时都使用它们的过程中初始化集合来解决这个问题,但这似乎是一个糟糕的解决方案。
-
如果您不喜欢您的解决方案,为什么不将其作为更新发布并征求建议?
-
Public Const myvar as integer = 999
标签: excel vba global-variables public shared