2013-03-22 214 views
4

的编译的顺序让我们假设我们是在Visual Basic编辑器,在Excel 2007中我们创建一个模块,名为modGlassExcel中,编译的VBAProject - 更改模块

Sub VolatileGlass() 
    Dim Glass As shiny_surface 

End Sub 

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

Sub durableMetal() 
    Dim metal As metal_compound 

End Sub 

enter image description here

替补在两个模块包含错误:"User-defined type not defined."

当我使用调试编译项目:编译的VBAProject菜单项,在modGlass模块总是先编译。如果我:

  • modMetal模块上双击并编译(?它)或
  • 重命名modMetalamodMetal(从而使金属模块是目前第一个项目的模块树层次)

仍然,首先编译modGlass模块。

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

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

+0

+ 1好的问题:) – 2013-03-22 20:13:16

回答

4

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

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

不,很遗憾没有直接的方法(AFAIK)来指定那个序列。然而,肮脏的方式是基于我上面提出的建议。复制所有数据到记事本,然后删除所有的模块,然后重新创建它们从头开始(在要编译它们的顺序)

HTH

+0

感谢您的回答。为了指定序列,我最初想出了导入和导出模块的方法,但我只是删除/重新创建它们的方法更快。干杯。 – colemik 2013-03-22 21:46:22