有人知道如何将工作表包装成UDF函数吗?
本质上,我希望创建一个工作表或工作簿,它执行某些计算,然后在其他工作表或工作簿中重用这些代码。理想情况下,UDF将设置某些输入单元格的值,并从某个输出单元返回一个值。
这个问题的答案有问题,但效果不佳。
Using a UDF in Excel to update the worksheet
理想情况下,我希望在Excel中这样做,但我完全接受其他电子表格软件、第三方excel工具或替代平台的建议。
发布于 2015-12-24 11:45:12
除了正在使用的单元格之外,UDF不用于更改任何单元格的值。
在某些用例中,有一些用于此的黑客。然而,这不是UDF的设计特性,而是对Excel中其他设计的巧妙操作。无论如何,我想大多数人都会同意,这些类型的黑客可能是不稳定的,肯定不推荐用于生产。
如果您想在同一时间更改多个单元格,最好编写一个Sub
。这给了你更多的控制,行为有很好的记录,而且总体上你的计算不依赖于非官方的工作--在任何给定的补丁中,这些工作可能或不会中断。
发布于 2016-01-12 07:56:30
我已经找到了我自己问题的答案。看起来UDF不能更改从excel实例中调用的单元格值。我想要的行为可以通过在第二个实例中创建一个新的Excel实例和openinf (当前工作簿的副本)来实现。然后,第一个实例可以调用修改第二个实例的UDF。因此,电子表格中的计算可以成功地封装在UDF中。
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
发布于 2016-01-12 08:08:30
这是真的有点..。但是,您的UDF可以使用调用它的单元格引用,调用一个激活Win API计时器的函数。回调函数可以做你想做的事.
https://stackoverflow.com/questions/34452049
复制相似问题