Excel VBA: 基于复选框输入的用户自定义函数不重新计算

Excel VBA: User defined function based on checkbox input not recalculating

在 Excel 2013 年,我定义了一个自定义函数 CUSTOM_EQUITY,其中 returns "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,但是如果您只是将此行放在 CheckBox_Change() 中:

Sheets("Your_Sheet_Name").Calculate

如果它是 Excel CheckBox :

  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