在 Excel 加载项中实现非数组更改 UDF
在 Excel 加载项中,通常禁止更改单元格值的 UDF。但是,可以使用 Windows 计时器和 Application.OnTime 计时器的组合来绕过此限制。
Windows 计时器限制
Windows 计时器无法在单元格时执行 VBA 代码正在编辑或对话框已打开。此限制阻止它们直接修改 UDF 中的单元格属性。
解决方案:Application.OnTime Timer
为了规避此限制,在 UDF 中使用 Windows 计时器来安排一个 Application.OnTime 计时器。 Application.OnTime 计时器是安全的,仅在未编辑单元格且没有打开对话框时触发。
UDF 实现
UDF 实现 (AddTwoNumbers): 在 AddTwoNumbers UDF 中,照常计算总和。计算后:
初次例程(AfterUDFRoutine1):
第二个定时器例程(AfterUDFRoutine2):
示例用法
Private Sub TestAddTwoNumbers() Dim Cell As Range Set Cell = Range("A1") ' Cache the reference in the UDF Cell.Formula = "=AddTwoNumbers(1, 2)" ' Trigger the timer routine Cell.Calculate End Sub
计算后,通过将调用者旁边的单元格设置为其当前值,单元格公式将更改以反映新值。
以上是如何在 Excel 插件中实现非数组更改 UDF?的详细内容。更多信息请关注PHP中文网其他相关文章!