2014-02-07 34 views
0

我可以在Excel VBA中編寫UDF,其中函數的返回值將覆蓋從中調用的單元格值嗎?返回值的Excel VBA UDF將自行覆蓋

該函數用sql請求獲取信息。在這種情況下,它只是主數據,例如項目描述。如果用戶將在許多單元格的工作表中使用此函數,那麼每次更改某些內容時,Excel都會重新計算單元格的值。這樣做的性能很差,通常只需要一次獲取信息,在這種情況下不需要更新。

我以爲使用application.caller.address方法來獲取函數被調用的地址,但它似乎無法設置該函數內的此地址的單元格值。 所以函數的返回值應該覆蓋運行該函數的原始公式。

這可能

感謝您的幫助

+0

不,它不是。你需要編寫一個程序來運行你的數據,併爲每個數據進行查詢並將其寫入單元格。如果在函數中使用,則函數只應在更改源單元格時重新計算。不是「每當你改變什麼」 – SWa

+0

它是,但它的棘手。請參閱http://stackoverflow.com/questions/8520732/i-dont-want-my-excel-add-in-to-return-an-array-instead-i-need-a-udf-to-change – brettdj

+1

@ brettdj非常感謝,解決了我的問題。 – user3272299

回答

0

號正如你可能已經注意到Excel單元格有多層。

一個是「價值」。另一個可以分配的公式。

函數返回一個值,因此返回值僅訪問此圖層。所以你不能返回公式的替代品,因爲它在另一層上。

函數與返回值中的sub不同,sub不返回任何內容。由於您的「一次性使用」行爲,子將適合您的需要不僅僅是一個函數,因爲您不想返回一個值,而是從單元格(公式)中刪除或替換某些內容。

但是,這並不意味着你不能用一個函數做到這一點 - 但仍然沒有返回值。但是如果你使用這樣的函數,你需要在數據刷新上重寫整個公式。

你可能錯過了一個觀點,你讓自己笑起來我猜。 Excel本身就有這樣的事情。但它不是一個功能。

複製您的單元格並粘貼它們,但使用「僅限值」。

完全有同樣的效果。

同樣在重新計算...爲什麼不關掉它? 每次你都不會重寫這個函數。