【发布时间】:2019-11-27 03:04:17
【问题描述】:
我很惊讶这样一个简单的功能似乎在 VBA 中不受支持。假设我想将值 0.5 写入 函数 内的单元格 E7(不是子!):
Public Function writeToCell() As Integer
ActiveSheet.Range("E7").Value = 0.5
writeToCell = 0
End Function
而当我在另一个单元格中调用writeToCell函数F9时,出现值错误,写入语句执行失败。
为什么我们不能写入函数内的单元格?有什么解决方法吗?我的问题是我将写入一些预先指定的单元格的值取决于函数内部计算的一些中间结果。因此,当我从工作表中的目标单元格调用该函数时,我将不得不写入该函数内的单元格。
【问题讨论】:
-
这听起来与 Excel 的想法很矛盾,而且性能损失会很严重,因为每次工作表重新计算时都会写入单元格。
-
以@PatrickHonorez 的评论为基础,如果您只使用按下按钮(或热键)时触发的 sub 可能会更好。 UDF 并非真正设计用于编辑其他单元格
-
@PatrickHonorez 我会说每次刷新时重新计算是 Excel 的功能,例如允许在更新参数时进行“实时”监控。除此之外,我永远不会将 Excel 用于任何数据分析任务,因为 VBA 及其原生编辑器使用起来非常难看......
-
@TimStack 是的,我正在考虑这个问题。按钮+sub 更容易,虽然不够健壮。
-
不健壮?就是这样。您甚至可以利用
Selection_Change或Worksheet_Change事件或Application.OnTime来使更新自动且更频繁