vba - 使用全局常量存储环境变量

标签 vba excel

我正在为 Microsoft Excel 创建一个加载项,并使用一个模块来存储变量(在运行时不会更改),这些变量由应用程序中的类和其他模块访问。这是一种更方便的硬编码值方法,我可能必须在开发周期的不同点找到并替换它。

变量是应用程序版本或工作簿密码等内容:

Option Explicit
Option Private Module

Global Const APP_ID = "XXY"
Global Const APP_VERSION = "1.00"
Global Const WORKSHEET_PASSWORD = "s0Me_pa$$w0rD"
Global Const DATA_TABLE = "tblStockData"
Global Const FORM_DEFAULT_VALUE = 200

我想知道是否有人可以告诉我这是否是不好的做法,如果是,更好的做法是什么?

最佳答案

我通常会做完全相同或另外两件事,具体取决于应用程序的大小。如果是小事,我就用你的方法。然而,这些是我使用的其他方法。

第一种方法:

如果用户应该更改密码或默认值,我会制作一个单独的表,称为“设置”,并将它们写在那里。然后我为密码创建一个公共(public)函数,如下所示:

public function GetPassword as string
   GetPassword = [set_password]
end function

第二种方法:

如果这是一个包含大量常量和公共(public)变量的大型应用程序,那么作用域会变得有些“脏”,并且很难找到变量。因此,我创建了一个常量类并在那里声明它们。然后,调用它们就更容易了。

类似这样的事情:

Private Const p_First_COLUMN_TO_FILL = 8

Public Property Get FIRST_COLUMN_TO_FILL() As Long
    FIRST_COLUMN_TO_FILL = p_First_COLUMN_TO_FILL
End Property

因此,如果我的类是 clsConstants,我将其声明为 Public objCon As clsConstants,现在使用 objCon.FIRST_COLUMN_TO_FILL 我得到了我想要的想。这样范围就更清晰了。您还可以构建多于一类的常量,具体取决于它们的用途。

关于vba - 使用全局常量存储环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41587034/

相关文章:

excel - Access VBA - 触发组合框更改事件

vba - 从特定行中选择具有值的所有单元格

mysql - 如何比较和删除 excel 中未使用的 ID

php - 使用 PHP 将数据从 SQl 导出到 Excel

VBA:如何同时引用两个工作簿中的单元格

excel VBA 在单元格更改时自动运行宏

excel - 如何使用引用单元格中的值设置范围?

excel - 使用 Excel 正确计算(和求和)分子量

VBA代码找出范围内的最大值并将1添加到另一个单元格中的值

arrays - 在 Visual Basic 编辑器中声明全局数组