首页 > 解决方案 > 如何使 excel 单元格从 vba 模块中更新?

问题描述

我对 VBA 编码还是很陌生,有一段时间我遇到了同样的问题。在我的代码中,我经常绕过一个问题,即我有一个函数或子函数来执行一个任务或一系列任务,这些任务会改变任意数量的变量/值。我还有许多包含检索单个值的函数的 excel 单元格——比如“ =Get_Density(B1,B2)”——其中 B1 和 B2 可能是质量和体积。

每当我更改工作表上与函数中的一个变量有关的值时,我的大多数单元格都会更新。例如,如果我更改单元格 B1,这将自动调用Get_Density()要运行的函数,从而自动更新单元格。

我想要的是当我有一个没有输入参数或“if 语句”的函数来控制单元格何时更新时——比如“ Get_Density()”——没有参数......我如何在外部启动我的函数。

这只是一个示例,但它类似于我想要实现的目标 - 可以说我的值来自从 Excel 工作表上的按钮打开的用户表单。还可以说我可以输入两个值 - 质量和体积。一旦我输入两个值,我单击一个显示“完成”的按钮,然后程序计算密度值并将其设置为等于单独模块中的变量。现在如何实例化在按下按钮或用户表单关闭时检索值的单元格?

我尝试直接将 VBA 中的单元格设置为我想要的值。我唯一的问题是,如果我想要值的位置发生变化,那么我必须在我的代码中更改它的每个实例。我也尝试过检查 excel 中的条件,但这仅适用于特定实例。

如果需要,我可以显示代码,但我希望 VBA 和 excel 中有一个方法或函数可以实现我想要的。我真的没有需要修复的代码。

标签: excelvba

解决方案


在将新值输入到工作表后,在要重新评估的所有函数的开头添加以下说明

application.volatile

推荐阅读