重新计算工作表时强制运行宏(Microsoft Excel)
当您编写宏时,可以将其设计为在您选择运行它时就运行。如果您需要开发一个可以在工作表中发生任何更改时运行的宏,该怎么办?如果要宏自动运行怎么办?如果要创建要在工作表的单元格中使用的自定义函数,则这特别有必要。
这就是“易失”方法派上用场的地方。您需要做的就是在宏中包含以下语句:
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培训的来源。
本技巧(2013)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: