为什么在一个 VB6 项目中声明的全局变量不能在同一 VB6 项目组的另一个项目中编译?

lv1*_*958 5 vb6 variables global

我很抱歉这是一个如此基本的问题。

我们的 VB6 项目组包含 6 个项目以及包含所有应用程序表单的 UI 项目。

我们在其中一个表单后面的代码中生成一个 uniqueID (gstrUniqueImportUuid),该 ID 必须暴露给项目组中另一个项目中的类。

我尝试将此变量声明为 Common.bas 模块中的全局变量,该模块是主 UI 项目的一部分,如下所示:

Option Explicit
Public gstrUniqueImportUuid As String
Run Code Online (Sandbox Code Playgroud)

然后我在表单中为 gstrUniqueImportUuid 分配一个值,效果很好。

但是,当我尝试在组中的其他项目之一中使用该全局变量的值时,该项目将无法编译 - “变量未定义”。

我到底做错了什么?

谢谢。

RS *_*ley 5

模块在项目之外不公开。您想要做的是创建一个类并将其实例设置为 GlobalMultiUse。该类的任何公共属性对于引用该项目的任何项目都是可见的。请注意,您只能对 ActiveX DLL 和 ActiveX EXE 执行此操作。


Jon*_*nas 1

我现在有点猜测,但是您尝试使用该变量的“其他项目”是否引用了“UI 项目”?必须在菜单项目->引用的引用列表中检查 Ui 项目。

通常,UI 项目引用一个或多个其他项目,但反之则不然。即使变量是全局变量,也必须引用声明该变量的项目。

如果引用不存在并且您无法添加引用(您可能会获得循环依赖项),您可以将字段 gstrUniqueImportUuid 的声明移动到其他项目 .bas 文件之一。您将其移动到的项目(如果不是“其他项目”,则必须由 UI 项目(以及“其他项目”)引用