首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >扩展代码重用

扩展代码重用
EN

Stack Overflow用户
提问于 2015-12-24 11:23:47
回答 3查看 52关注 0票数 0

有人知道如何将工作表包装成UDF函数吗?

本质上,我希望创建一个工作表或工作簿,它执行某些计算,然后在其他工作表或工作簿中重用这些代码。理想情况下,UDF将设置某些输入单元格的值,并从某个输出单元返回一个值。

这个问题的答案有问题,但效果不佳。

Using a UDF in Excel to update the worksheet

理想情况下,我希望在Excel中这样做,但我完全接受其他电子表格软件、第三方excel工具或替代平台的建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-24 11:45:12

除了正在使用的单元格之外,UDF不用于更改任何单元格的值。

在某些用例中,有一些用于此的黑客。然而,这不是UDF的设计特性,而是对Excel中其他设计的巧妙操作。无论如何,我想大多数人都会同意,这些类型的黑客可能是不稳定的,肯定不推荐用于生产。

如果您想在同一时间更改多个单元格,最好编写一个Sub。这给了你更多的控制,行为有很好的记录,而且总体上你的计算不依赖于非官方的工作--在任何给定的补丁中,这些工作可能或不会中断。

票数 1
EN

Stack Overflow用户

发布于 2016-01-12 07:56:30

我已经找到了我自己问题的答案。看起来UDF不能更改从excel实例中调用的单元格值。我想要的行为可以通过在第二个实例中创建一个新的Excel实例和openinf (当前工作簿的副本)来实现。然后,第一个实例可以调用修改第二个实例的UDF。因此,电子表格中的计算可以成功地封装在UDF中。

代码语言:javascript
运行
复制
Option Explicit
Public xl As Excel.Application
Public wb As Workbook
Public ws As Worksheet


Function calc(x As Double) As Double

If xl Is Nothing Then


    Set xl = CreateObject("Excel.Application")

    Set wb = xl.Workbooks.Open(ThisWorkbook.FullName)
    xl.Visible = False

    Set ws = wb.Worksheets("CalcluationModule")


End If

ws.Range("i").Value = x
wb.Application.Calculate

calc = ws.Range("PV").Value



End Function
票数 0
EN

Stack Overflow用户

发布于 2016-01-12 08:08:30

这是真的有点..。但是,您的UDF可以使用调用它的单元格引用,调用一个激活Win API计时器的函数。回调函数可以做你想做的事.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34452049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档