2016-07-24 8 views
0

Ich habe VBA-Code, der diese Methode nach einer gewissen Zeit vergangen ruft hat Application.OnTime VerwendungWie kann ich meine Arbeitsmappe in VBA speichern, ohne das Ausführen des Makros zu stoppen?

Sub run() 

Worksheets("Sheet1").Calculate 

Cells(2, 5).Value = Cells(2, 5).Value + 1 

ActiveWorkbook.Save 

End Sub 

jedoch nach der ActiveWorkbook.Save Linie, die Makros laufen nur stoppen. Wie kann ich meine Makros nach dem Speichern der Arbeitsmappe weiter ausführen oder nach dem Speichern ein Makro aufrufen? Ich verwende Excel 2013 btw

hier ist mein Makro, das laufen Anrufe:

Sub every30seconds() 

runTime = Now + TimeValue("00:00:30") 

Application.OnTime EarliestTime:=runTime, Procedure:="run", schedule:=True 

If Cells(2, 5).Value = 2 Then 
    Application.OnTime runTime, "run", , False 
    Cells(2, 5).Value = Cells(2, 5).Value - 2 
End If 

End Sub 
+0

ist, wo Ihr Makrocode ist die Laufunter nennen? Haben Sie einen Code in Ihren Subs 'Workbook_AfterSave' oder' Workbook_BeforeSave'? – dbmitch

+0

Haben Sie versucht, eine Zeile zu dem obigen Code wie 'MsgBox" Datei wurde gespeichert. "' Nach dem Speichern Befehl, um Ihre * Annahme * zu bestätigen, dass die Code hört einfach auf zu laufen? – Ralph

+0

@dbmitch okay, ich habe gerade mein Makro hinzugefügt, dass Anrufe unter laufen, und nein, ich nicht, ich versuchte mit workbook_aftersave vor und es hat nicht funktioniert. Kannst du mir ein Beispiel geben? – Edmond

Antwort

1

Die Application.OnTime Methode ermöglicht es Ihnen nicht etwas passieren mehrmals in die Zukunft zu planen. Sie können nur festlegen, dass etwas einmal passiert.

ich glaube, der Code, den Sie nach sind

Sub run() 
    Worksheets("Sheet1").Calculate 

    Cells(2, 5).Value = Cells(2, 5).Value + 1 

    ActiveWorkbook.Save 

    every30seconds 
End Sub 

Sub every30seconds() 
    If Cells(2, 5).Value <> 2 Then 
     runTime = Now + TimeValue("00:00:30") 

     Application.OnTime EarliestTime:=runTime, Procedure:="run", schedule:=True 
    Else 
     Cells(2, 5).Value = Cells(2, 5).Value - 2 
    End If 
End Sub 
Verwandte Themen