返回值的Excel VBA UDF将覆盖自身

时间:2014-02-07 09:56:54

标签: excel vba excel-vba excel-udf

我可以在Excel VBA中编写一个UDF,其中函数的返回值将覆盖从中调用的单元格值吗?

该函数使用sql请求获取信息。在这种情况下,它只是主数据,例如项目描述。如果用户将在许多单元格的工作表中使用此功能,则每次更改内容时,excel都会重新计算单元格值。这性能很差,通常只需要获取一次信息,在这种情况下不需要更新。

我想使用application.caller.address方法来获取调用函数的地址,但似乎无法在函数中设置此地址的单元格值。 因此,函数的返回值应该覆盖运行函数的原始公式。

这可能吗

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可能已经注意到Excel单元格有多个图层。

一个是"值"。另一个你可以分配的公式。

一个函数返回一个值,因此返回值只访问该层。所以你不能返回公式的替代品,因为它在另一层上。

函数与返回值中的sub不同,sub不返回任何内容。由于您的行为一次性使用" sub不仅仅适合函数,因为你不想返回一个值,而是从cell(公式)中删除或替换某些内容。

但是,这并不意味着您无法使用函数执行此操作 - 但仍然没有返回值。但是如果要使用这样的函数,则需要在数据刷新时重写整个公式。

你可能错过了一个让你自己开怀大笑的观点。 Excel本身就有这样的东西。但它不是一种功能。

复制您的单元格并粘贴它们,但仅使用"值"。

完全有同样的效果。

另外在重新计算方面......为什么不把它关掉? 这样你就不会每次都重写这个函数。