excel - VBA 全局声明
问题描述
这是一个非常幼稚的问题,我猜。我有一些全局变量
Dim foo, bar as Double
然后将其设置为:
Sub setter()
foo = 3.14
bar = 2.718
End Sub
我希望在启动时初始化变量,我收集到可以用
Private Sub Auto_open()
Call setter
End Sub
问题是:这会拿起声明,还是我需要做一些其他的魔法?
解决方案
Dim
不能用于声明全局变量。用于Dim
在过程范围内声明局部变量。
在模块级别使用时,Dim
等效于Private
,您应该Private
改为使用,以保持一致性(Private
对抗Public
比Dim
这样做更清楚)。
Dim foo, bar as Double
请注意,这会产生bar
一个Double
, 并留下foo
一个隐含的Variant
。如果两者都是Double
,则声明应如下所示:
Dim foo As Double, bar As Double
我建议每个语句声明一个变量。
Dim foo As Double
Dim bar As Double
以这种方式维护要容易得多。
至于你的问题,假设一切都在同一个模块中,你很好 - 变量不需要是全局的(Public
- 也有一个Global
关键字,但你只能在标准模块中使用它,它在功能上是相同的to Public
,所以不要使用Global
,它已经过时了),因为没有其他模块需要访问它们。
请注意,您需要全局变量是非常、非常、非常罕见的。大多数时候,您将在过程之间传递参数。
推荐阅读
- javascript - 扩展 RxJS 主题以包含操作符
- reactjs - SyntaxError:在 npm 启动期间,.less 文件中带有 @import 的无效或意外令牌
- javascript - 使用 filepond 创建用于文件上传的 PHP 后端
- python - 在 scattermapbox 中绘制标记的问题
- python - 网页抓取中的间距
- c++ - 从二叉搜索树中删除后子节点分配的原因?
- algorithm - 在没有映射函数的 Lisp 中生成排列
- java - Android MediaRecorder 不工作并在 stop() 方法上崩溃
- c++ - 为什么我不能使用箭头运算符访问对象
- python - 如何在 PySimpleGUI 代码中实现一个不断运行的循环?