Const变量在" Type" -Statement vba中

时间:2014-12-04 13:18:11

标签: vba excel-vba ms-word const word-vba

我想在这样的VBA Makro中总结我的Const变量:

Private Type Company
   Public Const CompanyNameColumns As String = "14"
   Public Const CompanyNameStartRow As Integer = 5
Type End

我无法运行此代码。 我认为问题是,不可能在Type语句中定义Const。 有没有人解决这个问题?

2 个答案:

答案 0 :(得分:4)

所以,它花了我一秒钟,但随后它像一堆砖头一样砸我这里发生了什么。

TL; DR :您无法在定义类型时指定值,但有正确的方法可以执行您要执行的操作。

您无法分配的原因是您要定义类型。我知道这听起来是周期性的和多余的,但这正是发生的事情。您正尝试在用于定义数据结构的位置分配值。这就是UDT所做的一切。它定义了一个结构。为结构赋值是没有意义的。

正如您所发现的,一种解决方案是创建一个新模块并将常量存储在那里。

<强> Constants.bas

Public Const CompanyNameColumns As String = "14"
Public Const CompanyNameStartRow As Integer = 5

然后这样被调用......

Constants.CompanyNameColumns
Constants.StartNameRow

这很好,但冒着成为一个全部的风险。将它们与它们相关的逻辑一起移动到类模块中会好得多。这样,所有相关的逻辑和数据都集中在一个地方,而不是分散在项目中的多个* .bas文件中。

如果您要使用类路由,但类只保留此数据结构,而没有任何实际状态,您可能需要考虑making them global default instances。这类似于其他语言中所谓的“静态”类。

答案 1 :(得分:1)

我现在通过定义一个新模块解决了这个问题。将其命名为公司并将Consts放在那里!