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

时间:2015-05-27 10:01:07

标签: excel vba excel-vba checkbox excel-2013

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

使用强制更新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

当复选框值更改时,如何自动重新计算函数?

1 个答案:

答案 0 :(得分:1)

我不确定您是在谈论用户窗体中的 CheckBox ,但如果您只是将此行放在CheckBox_Change()中:

Sheets("Your_Sheet_Name").Calculate

如果是 Excel CheckBox

  1. 添加链接的单元格(此处位于C1中)
  2. 将其放在工作表模块中
  3. 此代码:

    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