当您编写宏时,可以将其设计为在您选择运行它时就运行。如果您需要开发一个可以在工作表中发生任何更改时运行的宏,该怎么办?如果要宏自动运行怎么办?如果要创建要在工作表的单元格中使用的自定义函数,则这特别有必要。

这就是“易失”方法派上用场的地方。您需要做的就是在宏中包含以下语句:

Application.Volatile

这将通知Excel宏的结果取决于工作表中的值,并且每当重新计算工作表时都应执行该宏。例如,考虑以下用户定义的函数:

Function CountCells(MyRange As Range)

Dim iCount As Integer     iCount = 0     For Each cell In MyRange         If cell.HasFormula Then             iCount = iCount + 1         End If     Next cell     CountCells = iCount End Function

如果在单元格中使用此函数,则计算包含指定范围内的公式的单元格数。但是,该函数仅在第一次将其输入到单元格中或每当包含该公式的单元格被编辑时才运行。如果希望每次重新计算工作表时都重新计算函数,则可以在函数开头附近添加Volatile方法:

Function CountCells(MyRange As Range)

Dim iCount As Integer     Application.Volatile     iCount = 0     For Each cell In MyRange         If cell.HasFormula Then             iCount = iCount + 1         End If     Next cell     CountCells = iCount End Function

包含Application.Volatile方法意味着每次重新计算工作表时,都会再次运行此函数(宏)。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

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

本技巧(10598)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: