为 Excel VBA 创建常量库的理想方法是什么?

What's the ideal way to create a constant library for Excel VBA?

我希望创建一个用于结构计算的函数集合。我的想法是拥有一个模块或类似的模块,我可以将其导入 Excel 工作簿,然后开始使用 VBA 中的函数来满足我可能需要的功能。

我最初需要做的是定义一些带有数据常量的标准变量。例如管道数据的集合:商业名称、内径、外径、每米重量等。它是一个常量库:行业管道都是一样的,并且不会随着时间的推移而发生太大变化。

在 VBA 中执行此操作的最佳方法是什么?最初我认为一个普通的旧 public 数组或字典可以做到这一点。有了字典,我可以按照以下方式做一些事情:

pipe_diameter = pipes("HSS100x100x3")

但是有初始化的问题。我会将我的管道数据放在代码中,放在一个模块中,但我必须记住在每段代码的开头调用一个 init_pipes sub,以便将数据加载到数组中并使其成为可用。

另外我想我必须为每个管道参数做一个字典:pipes_diameter、pipes_unitweight、pipes_sectionarea 等。编码听起来不是很有趣.

所以向上移动,我想我可以制作一个管道 class。然后做类似的事情:

Dim pipedata as pipes
pipe_diameter = pipes.innerdiam("HSS100x100x3")

所有相关数据都将存储在 class 模块中。加载模块,创建您的对象,然后您就获得了可用的数据。我不得不考虑如何组织 class 以使其能够检索和更新数据,但它看起来是迄今为止最有希望的选择。

我说得对吗,或者是否有更简单的方法可以完成此操作,而不涉及 VBA 中的自定义 classes?

共享图书馆工作簿的最佳方式是 Excel 的内置功能,称为“个人工作簿”。这是存储在您的 XLSTART 文件夹中的工作簿。

有一个机器级别的 XLSTART 文件夹可以为任何用户打开,这需要管理员安装工作簿。对于普通用户,您可以将工作簿分享到其他用户的个人工作簿区域。

模式是这样的:

C:\Users$USERNAME\AppData\Local\Microsoft\Excel\XLStart

现在您已经知道如何共享 Excel 启动时自动打开的个人工作簿,您可以设计您的解决方案了。

我建议将管道数据放入工作簿中的 sheet 中的 table 中。然后,您可以将数据提取到您将向用户公开的任何 VBA 函数中。

这样,一旦代码为stable,就可以在不修改代码的情况下更改sheet中的底层数据。始终建议您将数据和代码分开。

字典只适用于 Key/Value 对。您想要为管道创建自定义 class 对象,其中包含您需要从 spreadsheet 中填充的所有字段。然后,您可以动态地将数据从 sheet 提取到管道对象的集合中。

Official Documentation