当我在大型数据集上处理公式时,有一天多次将公式计算转换为手动是有益的。问题是我经常忘记将公式更改回自动,这会在当天晚些时候导致问题。
我正在寻找将在Application.Calculation = xlCalculationManual(公式设置为手动)时启动的VBA代码,并且每隔x分钟打开一个msgbox,以提醒我计算设置为手动。
答案 0 :(得分:0)
您想使用Application.OnTime方法。
我从Chip Pearson的优秀网站http://www.cpearson.com/excel/OnTime.aspx
借用了以下代码将它放在常规模块中:
Public RunWhen As Double
Public Const cRunIntervalSeconds = 120 ' two minutes
Public Const cRunWhat = "TheSub" ' the name of the procedure to run
Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=True
End Sub
Sub TheSub()
If Application.Calculation = xlCalculationManual Then
MsgBox "Warning: calculations are manual."
End If
StartTimer ' Reschedule the procedure
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=False
End Sub
运行StartTimer以启动该过程(如果愿意,您甚至可以将其放入Workbook_Open事件中)。它将每2分钟检查一次,如果计算是手动的,则弹出警告。通过调整顶部声明的秒数,将2分钟更改为任何其他值。如果需要,我已经包含了StopTimer子。