Excel VBA:基于checkboxinput的用户定义函数不重新计算

在Excel 2013中,我定义了一个自定义函数CUSTOM_EQUITY ,根据是否选中checkbox(表单控件),返回"EXTERNAL""INTERNAL" 。 当我按下回车键时它可以正常工作,但是当我点击checkbox时,它不会自动更新,选中或取消选中它。

使用Ctrl + Alt + F9强制更新可以完美地工作,但是当单击checkbox时,我无法自动更新单元格。 正如你所看到的,我已经尝试了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值更改时,如何使我的函数自动重新计算?

我不确定你在说UserForm中CheckBox ,但是如果你只是把这行放在CheckBox_Change()

 Sheets("Your_Sheet_Name").Calculate 

如果它是一个Excelcheckbox

  1. 添加一个链接的单元格(这里是在C1)
  2. 将其放置在工作表模块中

此代码:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range("C1")) Is Nothing Then 'Nothing Else Sheets("Your_Sheet_Name").Calculate End If End Sub