Michael有一个链接到单元格A1的窗体控件(复选框)。他可以在单元格A1中放置一个公式,将其解析为True或False,然后该复选框将反映该结果。但是,如果有人单击复选框将其更改,则单元格A1中的公式将被显式的True或False覆盖。 Michael需要A1单元格中的公式来控制复选框,但他还需要用户能够在不覆盖公式的情况下切换复选框。他想知道这是否可能。

简而言之,这是不可能的。 Microsoft打算使用复选框来控制单元格中的值,然后可以在其他公式中引用该单元格。他们从未打算让链接的单元格包含公式。

如果需要,您可以尝试做的一件事是创建一个监视单元格的宏,如果它发生更改,则更新另一个单元格。例如,您可以将复选框绑定到其他单元格(例如单元格B1),以便使用复选框时,单元格A1中的公式不会受到影响。然后,您将创建一个事件处理程序宏,该宏将检查单元格A1中的内容,如果更改,则该宏将修改单元格B1中的内容。然后,单元格B1中的此修改将触发复选框中的更改。

另一种基于宏的方法是使用宏将公式写入单元格A1中。这是此类宏的简单示例:

Sub CheckBoxState()

Range("A1").Formula = "=IF(" & Range("A1") & _       ",""CHECKED"",""NOT CHECKED"")"

End Sub

如果将此宏分配给复选框控件,则当一个人单击复选框时,会发生两件事。首先,将复选框的状态写入单元格A1,覆盖其中的所有内容。其次,执行宏,将公式写回到单元格A1中。请注意,公式(在此宏中定义)考虑了刚刚存储在单元格A1中的值。因此,如果复选框控件将True写入单元格A1,则宏将以下内容填充到单元格中:

=IF(TRUE,"CHECKED","NOT CHECKED")

再次单击复选框,填充到单元格中的值将更改为False,并且放置在单元格中的公式将更改。当然,您需要修改宏,以便它强制进入单元格A1的公式反映您真正想要的公式。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(113)适用于Microsoft Excel 2007、2010、2013和2016。