2009-07-25 37 views
0

でApplication.OnTimeをキャンセルする場合は、私は次のコードを使用してApplication.OnTimeイベントをキャンセルしようとしている:Excel 2003でVBAを使用してVBA

varNextRunTimeは次の時間を含むグローバル変数です
Application.OnTime EarliestTime:=varNextRunTime, Procedure:="SomeMethod", Schedule:=False 

それは走ることによる。このコードはWorkbook_BeforeCloseイベントハンドラで実行されるため、ワークブックが閉じられたときに常に実行されますが、それは私の意図です。

ただし、保存(はい、いいえ、キャンセル)を求めるメッセージが表示されたときにユーザーがブックを閉じようとしたときにキャンセルボタンを押すと、Application.OnTimeイベントはキャンセルされます。 BeforeCloseは、打ち消すことを決める前に常に実行されるので、ワークブックが閉じられたときにApplication.OnTimeイベントをキャンセルできるのは誰にも分かりますか?

答えて

0

使用して調査:

Application.Quit 

ドキュメントが閉じているがExcelプログラムでこのコマンドの結果は開いたまま見つけた場合、あなたは

ActiveWorkbook.Close False 

でフォローしたいことがあり、私はではありませんよ残念なことに、これをテストしたり、より多くの洞察を与えたりするポジションです。

1

イベントハンドラのWorkbookSavedプロパティを確認してください。ワークブックが保存されていない場合は、独自のダイアログを表示して、変更を保存するか変更を保存しないかを確認します。

ここにいくつかの大まかなコードがあります。明らかにApplication.OnTimeパーツを扱っ行のコメントを解除し、

Private Sub Workbook_BeforeClose(Cancel As Boolean) 

Dim response As Integer 

If Not (Me.Saved) Then 
    response = MsgBox("Do you want to save changes to '" & Me.Name & "'?", vbYesNoCancel, "put title here") 

    If (response = vbCancel) Then 
     Cancel = True 
    ElseIf (response = vbYes) Then 
     Me.Save 
    End If 
End If 

If Not (Cancel) Then 
    ' Application.OnTime EarliestTime:=varNextRunTime, Procedure:="SomeMethod", Schedule:=False 
End If 

End Sub 
+1

ですそれじゃない? – nekomatic

+0

@nekomatic修正済み - ヘッドアップのおかげで – barrowc

関連する問題