Excel VBA选项专用模块等效,但仅适用于类模块中的单个函数?

Excel VBA选项专用模块等效,但仅适用于类模块中的单个函数?,excel,excel-addins,private-methods,vba,Excel,Excel Addins,Private Methods,Vba,在VBA中,我知道如果希望子/函数只能在当前项目中访问,可以将这些方法放入标记为选项Private module的模块中 但是如果我想用类模块中的某个方法来实现这一点,该怎么办?我可以从类中分离出一个方法吗 具体来说,我在我的一个类中有一个属性,我希望它是只读的,除非它在当前项目中使用。该类中还有其他属性/子类/函数,我希望它们是真正公开的 我认为,Friend属性Let…可能是正确的方法,但当我尝试它时,它不会阻止同一个打开的Excel会话中的另一个项目分配给该属性。 因此,我正在寻找一个类中

在VBA中,我知道如果希望子/函数只能在当前项目中访问,可以将这些方法放入标记为
选项Private module
的模块中

但是如果我想用类模块中的某个方法来实现这一点,该怎么办?我可以从类中分离出一个方法吗

具体来说,我在我的一个类中有一个属性,我希望它是只读的,除非它在当前项目中使用。该类中还有其他属性/子类/函数,我希望它们是真正公开的

我认为,
Friend属性Let…
可能是正确的方法,但当我尝试它时,它不会阻止同一个打开的Excel会话中的另一个项目分配给该属性。 因此,我正在寻找一个类中函数子集的
选项Private Module
的等价物

这可能吗



解决这个问题的另一种方法是:你能将一个类模块扩展到多个子模块上吗?

因为这个问题上没有太多的眼球,我甚至可能没有很好地表达它,我只是想我会发布我是如何决定同时解决这个问题的,为了后代

VBA中的类只能是
Private
PublicNotCreateable
,因此我已经在使用工厂方法来创建对象。
我只是向工厂方法添加了一些代码,以便为每个对象分配一个唯一标识符,并在我自己的单独数据结构中跟踪项目范围伪属性。 该类对属性有一个“Get”,但要分配给它,需要调用
选项Private Module
模块中的特殊项目范围函数。
这不是一个完美的解决方案,但至少它符合我的要求