不能在类模块中声明公共类型

时间:2018-09-06 08:42:32

标签: vba class ms-access types

我想在VBA(访问)类模块中创建一个返回结果类型的函数。像这样:

Nothing

此功能在许多不同的地方使用。

但是编译器告诉我,不允许在类模块中声明公共类型吗?为什么是这样?在哪里放置我的文字呢?我是否应该为此类型创建一个新模块?还是创建一个“ AllTypes”模块以放入所有类型声明更好?

2 个答案:

答案 0 :(得分:4)

关于为什么问题:

类模块应包含在代码单元中:如果未初始化类,则它们实际上不执行任何操作。

普通模块不是很多。普通模块中任何公开声明的东西都对所有人可用。

在类模块中具有SELECT * FROM ( SELECT 1,2 ) tbl WHERE 1 = 1; -- some description goes here ALTER TABLE my_table RENAME TO your_table; 类型是没有意义的,因为如果外部代码正在使用该类型,则它不会通过类模块进行访问。并且,如果仅使用类模块,则不需要将其公开。

以逻辑单位组织代码是明智的。如果将所有公共类型放在一个模块中是合乎逻辑的,请执行此操作,但这不是一个非常可扩展的设计决策。这与决定将所有公共功能放在一个模块中,而所有公共子模块放在另一个模块中一样明智。对我来说,将所有错误处理代码放在一个模块中通常更合逻辑,从该模块中函数中使用的所有公共类型声明开始。

答案 1 :(得分:1)

编译器是正确的。

因此,正如您所了解的,对这些声明使用标准模块。我只为此类声明(也包括枚举)保留一个模块。

相关问题