首頁 > 後端開發 > C++ > 主體

Excel UDF 可以修改儲存格而不傳回陣列嗎?

Susan Sarandon
發布: 2024-11-24 21:48:47
原創
875 人瀏覽過

Can Excel UDFs Modify Cells Without Returning Arrays?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板