首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板