2016-06-20 9 views
-1

Es gibt mehrere Male während des Tages, wo es vorteilhaft ist, Formelberechnungen zu manuell zu machen, während ich mit Formeln auf großen Datensätzen arbeite. Das Problem ist, dass ich regelmäßig vergessen, die Formeln wieder in "Automatisch" zu ändern, was später am Tag zu Problemen führt.Excel VBA Application.Calculation

Ich bin auf der Suche nach einem VBA-Code, der startet, wenn Application.Calculation = xlCalculationManual (Formeln sind auf manuell) und wird alle x Minuten eine msgbox öffnen, um mich daran zu erinnern, dass Berechnungen auf manuell festgelegt sind.

Antwort

0

Sie möchten die Application.OnTime-Methode verwenden.

ich den folgenden Code aus Chip Pearson ausgezeichnete Website nur in einem regulären Modul steckte es in http://www.cpearson.com/excel/OnTime.aspx

geliehen haben:

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 

Run Starttimer starten Sie den Prozess (man kann es auch in der PUT Workbook_Open Ereignis, wenn Sie möchten). Es wird alle 2 Minuten überprüft und wenn die Berechnungen manuell sind, erscheint eine Warnung. Ändern Sie die 2 Minuten in einen anderen Wert, indem Sie die oben angegebene Anzahl von Sekunden anpassen. Ich habe den StopTimer-Sub beigefügt, wenn Sie es brauchen.