2013-07-24 73 views
0

目前我有兩個版本的Excel插件 - 發佈的版本和當前的WIP版本。爲什麼我的項目調用另一個項目代碼?

當我加載到Excel並嘗試運行已發佈的代碼時,它會調用我的WIP代碼,而這是垃圾代碼用於測試。當我在VBE中打開代碼時,我仍然可以按照預期運行子例程。

我查找了調用其他項目代碼的項目信息,但我發現的只是如何做到這一點,而不是爲什麼會發生/如何阻止它。這可能是由於兩個項目具有完全相同的子程序和函數名稱,但當然這些項目應該優先?

目前這只是一個煩惱,但它會導致測試混亂。有人有主意嗎?

回答

0

我設法通過爲每個子程序指定模塊名來制止這種行爲。 顯然這是一個與.OnAction有關的知識缺陷,因爲它會從最近加載的任何工作簿(以及我假設的模塊)中調用。謝謝,爲了幫助,似乎我沒有意識到錯誤在哪裏!

0

在VB對象瀏覽器中,轉到引用並取消引用不需要的代碼。

+0

當我檢查發佈版本的引用時,它不包含當前項目。如果我以模塊名稱作爲前綴,那麼它可以工作,但是我不應該用內部代碼正確地做到這一點? – ThatGingerWill

+0

不知道VBA中的模塊優先順序... –

+0

您是否有打開工作簿時運行的任何代碼(Workbook_open) – Vasim

0

Excel會記住代碼指向的位置,因此即使未選中引用,它也會繼續工作 - 您還會注意到,如果您重命名加載項,函數將返回#NAME!而不是使用當前版本。

一種強制Excel重新評估代碼從何處獲取代碼的快速方法是執行搜索並替換,並將=更改爲=。這導致了同樣的公式,但強制Excel所以當前訪問版本被發現

(從PRB: Automation Add-In Function Binds to Excel Built-In Function with the Same Name外推)來更新其鏈接

+0

這些子例程是從菜單欄中調用的,即使在更改WIP模塊名稱後,如果我停止明確使用發佈版本中的當前模塊,它們將使用WIP代碼。 – ThatGingerWill

相關問題