Excel VBA – 用户定义类实例的公共范围

我最近开始用Excel VBA编程。 来自Java环境,我正在尝试将OOP原则应用于VBA,但是我很难做到这一点。

我创build了一个configuration类模块来封装所有的初始configuration,并提供简单和受控的访问。

从Workbook_Open()函数我初始化configuration对象。

我想要做的是将这个实例保存在公共范围内,以允许从完整的程序访问相同的实例。 (在Java中的静态variables或单例)

Option Explicit Dim conf As Config Private Sub Workbook_Open() Set conf = New Config End Sub 

这样做有效,但范围不公开。

当我把公共关键字,而不是Dim,我得到以下错误:

编译错误:

私有对象模块不能在公共对象模块中用作参数或公共过程的返回types,公共数据成员或公共用户定义types的字段

所以我的问题是,没有任何方法来保持对象实例的公开?

如果不是,那么以面向对象的方式组织项目的最佳方式是什么,而不是将所有内容都放在工作簿模块中?

谢谢你的时间。

只需将configuration类的实例更改为public? 点击configuration类,并通过属性窗口设置实例。