【发布时间】:2015-05-28 15:44:10
【问题描述】:
在 Excel 2013 中,我定义了一个自定义函数 CUSTOM_EQUITY,它根据是否选中复选框(表单控件)返回 "EXTERNAL" 或 "INTERNAL"。当我按下回车时它工作正常,但是当我点击复选框时它不会自动更新,选中或取消选中它。
使用 Ctrl+Alt+F9 强制更新效果很好,但是当复选框时我无法使单元格自动更新被点击。如您所见,我已经尝试过使用Application.Volatile。
Function CUSTOM_EQUITY()
Application.Volatile
Application.Calculation = xlCalculationAutomatic
Dim taxesExt As Boolean
taxesExt = ActiveSheet.Shapes("TAXES_EXT").ControlFormat.Value = 1
If taxesExt Then
CUSTOM_EQUITY = "EXTERNAL"
Else
CUSTOM_EQUITY = "INTERNAL"
End If
End Function
当复选框值发生变化时,如何让我的函数自动重新计算?
【问题讨论】:
-
你有没有考虑在
CheckBox的Change事件上调用函数的重新计算? -
我建议将复选框链接到单元格,并使用简单的 IF 公式而不是 VBA UDF。
-
@MatteoNNZ 谢谢,
ActiveSheet.CalculateChange事件成功了。 -
@user3964075 我需要使用 UDF,提供的代码只是一个简化的示例。
标签: vba excel checkbox excel-2013