0

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

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

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

这可能吗

感谢您的帮助

4

1 回答 1

0

不。

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

一是“价值”。另一个您可以分配的公式。

一个函数返回一个值,因此返回值只访问该层。因此,您无法返回公式的替代品,因为它位于另一层上。

函数在返回值上与 sub 不同,sub 不返回任何内容。由于您的“一次性使用”行为,一个 sub 将比一个函数更适合您的需要,因为您不想返回一个值,而是从单元格中删除或替换某些内容(公式)。

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

我猜你可能错过了让你自己发笑的一点。Excel 本身就有这样的东西。但它不是一个函数。

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

完全一样的效果。

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

于 2015-03-06T13:57:31.460 回答