2015-10-13 139 views
1

我有一個UDF收集其他功能的結果,並將它們發送到計算和發送響應的Web API。例如在其他功能之後運行UDF?

  A      B     C    D 
7 =CalcResult(E7, F7) =CalcResult(G7, H7)  234  =SendToAPI(A7,B7,C7) 
8 =CalcResult(E8, F8) =CalcResult(G8, H8)  274  =SendToAPI(A8,B8,C8) 
9   ...     ...     ...    ... 

會發生什麼事是,當你運行它SendtoAPI職位的API兩次用一個空值2和C,則第二與calcResult完成後正確的數據值。

有沒有什麼方法可以先訂購?

將SendToAPI設置爲最後一次運行?

+0

爲什麼不'= SendToAPI(CalcResult(E8,F8),CalcResult(G8,H8),C7)'?如果C7是一個公式,那麼堅持在那裏。 – Jeeped

+0

感謝您的快速響應,但客戶希望在這些部分通過時看到這些部分的結果,例如其中一個可能是計算包交付所需的天數以及另一個功能可能需要的天數。 –

+0

也許你可以在函數開始時檢查UDF SendToAPI參數的有效性,如果有一個是Null,可以退出? –

回答

3

當使用尚未計算的參數調用UDF時,UDF在計算序列中經常計算多次。一個未計算的變體參數在UDF中顯示爲空變體:因此解決方案是退出UDF而不發送給Web API(如果任何參數爲空)。

看我的網站頁面http://www.decisionmodels.com/calcsecretsj.htm瞭解更多詳情

而且我的博客文章https://fastexcel.wordpress.com/2011/11/25/writing-efficient-vba-udfs-part-7-udfs-calculated-multiple-times/

+0

非常感謝,它花費了大量的時間,但當變量以變量形式傳入時,IsCalced函數可以很好地工作。非常有用的響應和偉大的網站有很多提示。肯定會推薦給其他人。 –

相關問題