【问题标题】:VBA Code Standardisation PracticesVBA 代码标准化实践
【发布时间】:2015-08-18 04:08:51
【问题描述】:

我一直在出于多种目的在工作中应用 VBA。我注意到用户对表单(带有许多宏)所做的“点击”越多,错误率就越高。我想知道而不是需要 3 次单独点击的 3 个单独的功能 - 我应该将所有这些功能集中到一个子模块中以便于使用吗?

临床工作人员表示这对他们来说效果最好,但在代码优化和保持不同功能分开方面 - 这不会让事情变得非常混乱吗?由于我仍在学习 VBA,我想我会求助于迄今为止对我帮助很大的专家社区。​​p>

对于您对此的想法以及我如何创建最佳实践 VBA 标准来遵守的任何和所有 cmets,我将不胜感激。

我创建的静态复制函数和每月计算函数就是一个例子。为了完成每月计算,它从摘要选项卡中提取数据并将其与静态数据进行比较。然而,要首先捕获静态数据 - 用户需要单击静态数据宏。我已经将静态快照功能和月度报告功能分开了,但我想知道是否可以将这两者组合成一个功能。可读性方面没有问题(因为我有 cmets 解释每个部分) - 但标准方面,这会不明智吗? 如果这个问题的性质有点宽泛,我深表歉意。

【问题讨论】:

  • 将常见任务捆绑在一起通常是个好主意。只要您仍然将各种任务分离到它们自己的函数中并从用户触发的主函数中调用它们,它就不应该使代码变得更加混乱。
  • 谢谢大家!我附上了 2 个不同功能的一些屏幕截图作为示例。我想我可以将静态和每月计算结合到一个“点击”宏中,但如果这是不好的做法,请尽早让我知道,这样我就不会开始创建糟糕的编码标准。
  • 我认为在提取静态数据和执行计算之间不需要用户交互(除非静态数据尚未准备好,但在这种情况下也无法进行计算)。此外,您应该组合功能而不是代码,只需创建一个新的 Sub 一个接一个地调用 2 个单独的函数 - 代码应尽可能保持模块化,每个函数执行一个明确的任务,并且只有一个 (分而治之的策略)
  • 看看你的截图,stackoverflow.com/questions/10714251/… 有一些非常好的建议,值得一读。
  • 当涉及到用户时,想想“iphone 方式”(名字的第一个)。如果用户可以在 1 次单击中完成所有操作,那就不要做更多了,仅此而已。唯一可以添加多次点击的情况是当您想要进行“星际迷航第一代”重拍时

标签: vba excel code-standards


【解决方案1】:

在浏览了几个论坛后,我获得了以下信息:

  • 除非有特定理由,否则不要使用全局变量
  • 不要忘记初始化变量,否则可能会遇到子脚本错误
  • 让您的代码保持简单(iPhone 方法 - 一键式方法)
  • 如果模块相似,请考虑将功能组合为一个
  • 宏记录器是你的朋友

感谢大家的提示!

【讨论】:

  • 我会将单独的项目分开,但出于同样的原因,将一个项目保留在一个工作簿中。仅在有意义的情况下将单个项目拆分为单独的模块,即如果您有一部分代码,也许是一个算法,它完全封装并与您的主项目分开。否则,一个项目,一个工作簿,一个模块。当然,单个项目可以包含多个例程和函数,甚至是单独的宏。用户界面应始终尽可能简单和万无一失,并测试(并处理)明显的用户错误。
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 2012-02-26
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 2018-08-05
  • 1970-01-01
相关资源
最近更新 更多