让我们假设我们在Excel 2007中的Visual Basic编辑器中。我们创建了一个名为modGlass
的模块:
Sub VolatileGlass()
Dim Glass As shiny_surface
End Sub
然后我们创建了第二个模块,名为modMetal
:
Sub durableMetal()
Dim metal As metal_compound
End Sub
两个模块中的子包含错误:"User-defined type not defined."
当我使用 Debug:Compile VBAProject 菜单项编译项目时,modGlass
模块总是先编译。如果我:
modMetal
模块并编译(它?)或modMetal
重命名为amodMetal
(以便金属模块现在首先位于项目的模块树层次结构中)仍然首先编译modGlass
模块。
问题:如果我在VBE中有一个包含多个模块的项目,有没有办法指定模块的编译顺序?
我真的不需要这个功能,但我很好奇是否有一些快速的方法可以做到这一点。我正在使用Excel 2007。
答案 0 :(得分:4)
模块不是根据它们的名称编译的,而是按照它们的创建顺序编译的。所以如果你在modMetal
要测试它,请创建两个模块。确保两个模块都有错误。编译时,您会注意到首先编译的模块将首先编译。现在删除第一个模块并重新创建它。这次编译时,第一个(不是新创建的)首先被编译:)
不,遗憾的是没有直接的方式(AFAIK)来指定该序列。然而,这样做的肮脏方式是基于我上面提到的。将所有数据复制到记事本,然后删除所有模块,然后从头开始重新创建它们(按照您要编译它们的顺序)
HTH