我正在Excel 2007中进行一些VBA编程,并且有一个工作簿将所有数据表从中复制到另一个工作表中.新表将有几个标题行,我想跟踪它们的位置,所以我不必经常在其中找到单词.
在Excel文档打开时,使用类并保持它们运行是最简单的方法吗?或者这会使它变得沉重和难以处理,我应该继续使用子程序?使用类有什么好处?它不像我有几个对象,只有工作表和列上的验证.
我想有一个常量材料的目录,所以我可以使用如下所示的代码:
Dim MyDensity, MySymbol
MyDensity = ALUMINUM.Density
MySymbol = ALUMINUM.Symbol
Run Code Online (Sandbox Code Playgroud)
显然铝的密度和符号预计不会改变所以我希望它们是常数但我喜欢简单的点符号.
我看到了几个选项,但我不喜欢它们.
为每种材料的每个属性制作常量.这似乎太多常数,因为我可能有20个材料,每个都有5个属性.
Const ALUMINUM_DENSITY As Float = 169.34
Const ALUMINUM_SYMBOL As String = "AL"
Run Code Online (Sandbox Code Playgroud)使用所有材质定义枚举并生成返回属性的函数.密度不是很明显,因为它的值是由函数返回的.
Public Enum Material
MAT_ALUMINUM
MAT_COPPER
End Enum
Public Function GetDensity(Mat As Material)
Select Case Mat
Case MAT_ALUMINUM
GetDensity = 164.34
End Select
End Function
Run Code Online (Sandbox Code Playgroud)似乎Const Structs或Const Objects不会解决这个问题,但也许我错了(甚至可能不被允许).有没有更好的办法?
我想遵循 Mathieu Guindon在这个优秀答案中描述的 MVP Userform 架构。但是,我不明白为什么在 FilterModel 类模块以及 FilterForm Userform 模块中,在类中创建了新类型,然后将其元素重新声明为类的属性。为什么这是必要的?为什么不将 SelectedFilter 声明为字符串类型的属性?我错过了什么吗?