Excel VBA Application.Calculation

时间:2016-06-20 18:43:23

标签: excel-vba vba excel

当我在大型数据集上处理公式时,有一天多次将公式计算转换为手动是有益的。问题是我经常忘记将公式更改回自动,这会在当天晚些时候导致问题。

我正在寻找将在Application.Calculation = xlCalculationManual(公式设置为手动)时启动的VBA代码,并且每隔x分钟打开一个msgbox,以提醒我计算设置为手动。

1 个答案:

答案 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子。