Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


40476 / 76732 ←次へ | 前へ→

【41354】BeforeSaveイベントでOnTimeを再セットで...
質問  ハチ  - 06/8/7(月) 13:20 -

引用なし
パスワード
   こんにちは。

「更新されていなければ、自動閉じる」処理を行おうとしているのですが、
BeforeSaveイベントからOnTimeを再セットできずに悩んでいます。

Open→Reset_OnTime→5秒後にBook_Chk→Book_ChkのSaveでBeforeSaveイベント
→Reset_OnTime→5秒後にBook_Chk→・・・・
となる予定だったのですがReset_OnTimeは実行されるのですが、
次回のスケジュールとステータスバーの更新がされません。
手動で上書き保存するとスケジュールとタスクバーの更新は、実行されます。

Book_Chk()内の*2の箇所で呼び出せば動作は問題ないのですが、
「なぜダメなのか?」知りたいです。
一通り、情報はチェックしたつもりなのですが、原因がわかりませんでした。
よろしくお願いします。

'標準モジュール

Public T As Date 'チェック実行時刻

Sub Reset_OnTime()
  MsgBox "Reset_OnTime" '*1 Reset_OnTimeの実行チェック用
  Const Intarval As String = "00:00:05" 'チェック間隔 テスト用に5秒間隔
  
  On Error Resume Next
    '次回チェックの削除
    Application.OnTime T, "Book_Chk", , False
    '次回チェックの再設定
    T = Now() + TimeValue(Intarval)
    Application.OnTime T, "Book_Chk"
    Application.StatusBar = "次回チェック:" & T
  On Error GoTo 0

End Sub

Sub Book_Chk()
  Dim WSH As Object 'WScript.Shell
  Dim Lmt As Date 'リミット時刻
  Dim Ans As Variant 'Popupの回答
  Dim Cnt As Integer 'Popupの表示時間(秒)
  
  Cnt = 3
  Set WSH = CreateObject("WScript.Shell")
  '更新されているかチェック
  If ThisWorkbook.Saved = True Then
    Lmt = T + TimeSerial(0, 0, Cnt) 'Lmtにチェック時間+Popup時間をセット
    Ans = WSH.Popup("未更新です。" & vbCr & Format(Lmt, "hh:mm:ss") & _
    "に自動終了します。" & vbCr & "更新を続けますか?", Cnt, , vbQuestion)
    If Ans <> 1 Then
      Set WSH = Nothing
      ThisWorkbook.Close True
    End If
  End If
  ThisWorkbook.Save '現在までの更新を上書き保存
  Set WSH = Nothing
  
  'Call Reset_OnTime '*2 BeforeSaveで実行されるので必要ないはず・・
End Sub


'ThisWorkBookモジュール

Private Sub Workbook_Open()
  '次回チェックの設定
  Call Reset_OnTime
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  '次回チェックの再設定
  Call Reset_OnTime
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  '次回チェック分のOnTimeを解除
  On Error Resume Next
    Application.OnTime T, "Book_Chk", , False
  On Error GoTo 0
End Sub

0 hits

【41354】BeforeSaveイベントでOnTimeを再セットで... ハチ 06/8/7(月) 13:20 質問
【41429】Re:BeforeSaveイベントでOnTimeを再セット... ichinose 06/8/10(木) 7:39 発言
【41432】Re:BeforeSaveイベントでOnTimeを再セッ... ハチ 06/8/10(木) 9:09 発言
【42333】Re:BeforeSaveイベントでOnTimeを再セッ... 漂流民 06/9/7(木) 0:10 発言
【42345】Re:BeforeSaveイベントでOnTimeを再セッ... ハチ 06/9/7(木) 13:47 発言
【42351】.Saveでは設定できないプロパティがある? ハチ 06/9/7(木) 16:52 発言
【42357】Re:.Saveでは設定できないプロパティがあ... 漂流民 06/9/8(金) 1:11 発言
【42362】Re:.Saveでは設定できないプロパティがあ... ハチ 06/9/8(金) 9:17 発言
【42386】Re:.Saveでは設定できないプロパティがあ... 漂流民 06/9/9(土) 0:40 発言
【42393】Re:.Saveでは設定できないプロパティがあ... ハチ 06/9/9(土) 7:50 発言
【42407】Re:.Saveでは設定できないプロパティがあ... ハチ 06/9/9(土) 20:25 発言
【42433】Re:.Saveでは設定できないプロパティがあ... 漂流民 06/9/11(月) 23:43 発言

40476 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free