2013-03-22 24 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