4

假设我们在 Excel 2007 中的 Visual Basic 编辑器中。我们创建一个模块,名为modGlass

Sub VolatileGlass()
    Dim Glass As shiny_surface

End Sub

然后我们创建第二个模块,命名为modMetal

Sub durableMetal()
    Dim metal As metal_compound

End Sub

在此处输入图像描述

两个模块中的 Subs 都包含错误:"User-defined type not defined."

当我使用Debug: Compile VBAProject菜单项编译项目时,modGlass模块总是首先编译。如果我:

  • 双击modMetal模块并编译(它?)或
  • 重命名modMetalamodMetal(这样金属模块现在在项目的模块树层次结构中排在第一位)

尽管如此,modGlass模块还是先编译。

问题:如果我在 VBE 中有一个包含多个模块的项目,有没有办法指定模块将按什么顺序编译?

我真的不需要这个功能,但我只是好奇是否有一些快速的方法可以做到这一点。我正在使用 Excel 2007。

4

1 回答 1

4

模块不是根据它们的名称编译的,而是根据它们创建的顺序编译的。所以如果你在前面加上“a”真的没关系modMetal

要对其进行测试,请创建两个模块。确保两个模块都有错误。当你编译它时,你会注意到首先创建的模块将首先被编译。现在删除第一个模块并重新创建它。这次当你编译它时,第二个(不是新创建的)首先被编译:)

不,不幸的是,没有直接的方法(AFAIK)来指定该序列。然而,肮脏的做法是基于我上面的建议。将所有数据复制到记事本,然后删除所有模块,然后从头开始重新创建它们(按照您要编译它们的顺序)

高温高压

于 2013-03-22T20:12:20.560 回答