Excel UDF:修改單元格而不返回數組
Excel 中用戶定義函數(UDF) 的局限性之一是它們無法直接修改儲存格或工作簿屬性。然而,存在一種解決方法,儘管很複雜,它允許 UDF 實現單元格修改。
使用Windows 和應用程式計時器來規避UDF 限制
從一個單元格內修改單元格採用了UDF,Windows 計時器和Application.OnTime 計時器的巧妙組合。 Windows 計時器啟動 Application.OnTime 計時器,該計時器在 Excel 允許儲存格修改時安全地執行程式碼。
實作
UDF 呼叫 Windows 計時器例程,該例程調度一個具有特定時間參數的Application.OnTime計時器。然後,Application.OnTime 例程執行 UDF 本身無法執行的程式碼。
示例代碼
以下代碼演示瞭如何實現此解決方法:
Public Function AddTwoNumbers(ByVal Value1 As Double, ByVal Value2 As Double) As Double AddTwoNumbers = Value1 + Value2 ' Schedule the Windows timer mWindowsTimerID = SetTimer(0&, 0&, 1, AddressOf AfterUDFRoutine1) End Function Public Sub AfterUDFRoutine1() ' Schedule the Application.OnTime timer mApplicationTimerTime = Now Application.OnTime mApplicationTimerTime, "AfterUDFRoutine2" End Sub Public Sub AfterUDFRoutine2() ' Perform modifications outside the UDF '... End Sub
注意事項
這個解決方法並非沒有限制。使用它的 UDF 不應是易失性的、傳遞易失性函數或包含易失性公式/函數的參考單元格。此外,只有當計時器在安全環境中觸發時才會發生儲存格修改(沒有開啟的對話方塊或儲存格編輯)。
以上是Excel UDF 可以修改儲存格而不傳回陣列嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!