gre*_*e57 3 vba const ms-word excel-vba word-vba
我想像这样在VBA Makro中总结我的Const变量:
Private Type Company
Public Const CompanyNameColumns As String = "14"
Public Const CompanyNameStartRow As Integer = 5
Type End
Run Code Online (Sandbox Code Playgroud)
我无法运行此代码。我认为问题在于,无法在类型声明中定义Const。有没有解决办法?
因此,花了我一秒钟,但后来却像一吨砖头一样把我sm了一下。
TL; DR:您不能在类型定义期间分配值,但是有一种正确的方法可以执行您要尝试执行的操作。
之所以无法为其分配值,是因为您正在定义一个类型。我知道这听起来是周期性的和多余的,但这就是正在发生的事情。您正在尝试在旨在定义数据结构的位置分配值。这就是UDT的全部工作。它定义了一个结构。将值分配给结构没有意义。
如您所见,一种解决方案是创建一个新模块并在其中存储常量。
常数
Public Const CompanyNameColumns As String = "14"
Public Const CompanyNameStartRow As Integer = 5
Run Code Online (Sandbox Code Playgroud)
然后被这样称呼...
Constants.CompanyNameColumns
Constants.StartNameRow
Run Code Online (Sandbox Code Playgroud)
这很好,但冒着成为所有人的风险。最好将它们及其相关的逻辑移到类模块中。这样,所有相关的逻辑和数据都放在一个地方,而不是分散在项目中的多个* .bas文件中。
如果您要走类路线,但类仅保留此数据结构,而没有任何真实状态,则可能需要考虑使它们成为全局默认实例。这类似于其他语言中所谓的“静态”类。