2010-01-22 63 views
1

問題! 我有一個我們在工作中創建的加載項,例如foo.xla,它有一個函數foo_sub(arg1)。VBA excel超載另一個加載項功能

現在,我想改進foo_sub(arg1)的行爲方式,但是不要編輯原始加載項代碼,因爲只要更新它,我必須將我的代碼從舊加載項遷移到較新的加載項代碼。

有沒有辦法在不同的加載項中寫foo_sub(arg1),比如說fee.xla,這樣每次我從工作表中調用foo_sub時,調用的是我寫的那個?

在此先感謝

回答

0

試圖overload a constructor in VBA in Excel時,我有很多的類似的問題。

但是,我認爲你的問題有點不同。您不一定要通過提供具有相同名稱和不同參數的單獨方法來重載該函數;你試圖添加一個完全相同的名稱,返回類型和參數的方法,並找出讓Excel調用你的函數而不是加載項的方法。

我並不積極,但我不認爲Excel VBA中可以這樣做。如果您嘗試調用在多個地方定義的函數,它將會感到困惑,並告訴您它不知道要調用哪一個函數。

您可能會創建一個名爲my_foo_sub(arg1)的包裝函數,其中包含自定義代碼。然後,如果您需要在.xla文件更新時切換到新的foo_sub(arg1),則可以將您的自定義代碼註釋掉並添加對foo_sub(arg1)的呼叫。這遠非理想,但可能有所幫助。

+0

是的,我擔心你和我是對的。 Excel不能像這樣處理,因爲我沒有使用對象來創建這個功能,所以沒有什麼東西像誰是誰的父母的層次結構然後優先調用。 我不能創建包裝函數,因爲在這裏工作的其他人可能需要我自己的加載項來重新打開文件並獲得相同的結果,在這種情況下,我最好選擇只傳遞我的加載項,在周圍或改善目前每個人都有的! :/ hehe 感謝您花時間瞭解我的問題。 – Ferfish 2010-01-25 06:11:33