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

And*_*rry 0 excel vba excel-vba

我正在研究一个中等复杂的VBA程序,它有很多变量来跟踪一堆嵌套的子程序.我已经通过将一个名为"Variables"的模块与我所有的变量(除了在子声明中声明的那些变量或者dim:ed as loop counters)声明为Public,所有这些变量进行了整齐分类和评论.

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

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

小智 5

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

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

  1. 在模块中,除非在模块外部访问,否则将子和函数声明为private.
  2. 在类中,除非需要,否则将所有内容声明为私有.您需要公开字段的位置,请使用属性.
  3. 在函数和subs中,声明例程中的所有内容而不是全局变量.
  4. 除非您有理由传递ByRef,否则将所有参数声明为ByVal.

我只在必要时使用全局变量.有时你确实需要使用它们,但我必须自己证明这一点.我支持许多使用全局变量的工作簿,这些全局变量在工作表,用户按钮等中设置了事件处理程序,这会让你在调试时感到头痛.

希望有所帮助.