有没有理由不一次声明我的所有变量?

时间:2016-01-25 09:19:48

标签: excel excel-vba vba

我正在研究一个中等复杂的VBA程序,它有很多变量来跟踪一堆嵌套的子程序。我通过一个名为" Variables"的模块完成了这项工作。声明为Public的所有变量(在子声明中声明的变量或dim:ed as循环计数器除外)都被整齐地分类和注释。

这一切都运行良好,代码运行得很快,但事实上,我发现的示例代码几乎没有使用公共/私有,而且往往默认为Dim,这给我一个令人讨厌的怀疑,我做错了什么。

在一大堆中完成这些操作是否真的有缺点,或者我只是偏执狂?

1 个答案:

答案 0 :(得分:5)

我不是Globals的粉丝。你可以陷入国家问题。此外,您无法在Globals中设置断点。

虽然,没有什么是一成不变的,因为每种情况都不同,我建议的是:

  1. 在模块中,除非在模块外部访问,否则将子和函数声明为私有。
  2. 在Classes中,除非需要,否则将所有内容声明为私有。如果需要公开字段,请使用属性。
  3. 在函数和子函数内部,声明例程中的所有内容,而不是全局函数。
  4. 除非您有理由传递ByRef,否则将所有参数声明为ByVal。
  5. 我只在必要时使用全局变量。有时你确实需要使用它们,但我必须自己证明这一点。我支持许多使用全局变量的工作簿,这些全局变量在工作表,用户按钮等中设置了事件处理程序,这会让你在调试时感到头痛。

    希望有所帮助。