|
よろしくお願いいたします
一定時間入力がなければブックを上書き保存で終了したいと思っています
動作的には
変更がなければ、警告フォームを出して
そのまま放置であれば30秒したら上書き保存でブックを閉じる
ボタン1 継続編集であれば、再度一定時間でフォームを出し判断
ボタン2 完了であれば、上書き保存でブックを閉じる
のような流れです
起動は、Workbook_OpenでTimerStartを実行で動いていますが
不具合の場所は
ボタン1 継続編集であれば、再度一定時間でフォームを出し判断
で、
フラグ Public tm_continue As Boolean がたっていたら
ユーザーフォームを閉じるとき
再度 'TimerStart すると
マクロ作動中みたいな状況で
ESCキーを押すと
DoEvents '←ここでとまる
となって、シート入力がギコチナイ状況となっています
編集継続のためのTimerStartをどのように呼べばいいでしょうか
---------------------------------------------------------
ThisWorkbook
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
TimerReset
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
TimerReset
End Sub
Private Sub TimerReset()
If TimerSW Then
TimerStop
TimerStart
End If
End Sub
---------------------------------------------------------
Module1
Option Explicit
Private SetTime As Date
Public TimerSW As Boolean
Public tm_continue As Boolean
Public Sub TimerStart()
SetTime = Now + TimeValue("00:00:10")
Application.OnTime EarliestTime:=SetTime, Procedure:="show_fm"
TimerSW = True
End Sub
Public Sub TimerStop()
On Error Resume Next
Application.OnTime EarliestTime:=SetTime, Procedure:="show_fm", Schedule:=False
TimerSW = False
End Sub
Sub show_fm()
TimerStart
UserForm1.Show
End Sub
---------------------------------------------------------
UserForm1
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click() '継続
TimerStop
Unload Me
tm_continue = True
End Sub
Private Sub CommandButton2_Click() '終了
TimerStop
Unload Me
tm_continue = False
End Sub
Private Sub UserForm_Activate()
Dim i As Integer
'閉じるまで30秒カウントダウン
For i = 30 To 0 Step -1
Me.Label3 = i
DoEvents
If TimerSW = False Then Exit For
Sleep 1000
DoEvents '←ここでとまる
Next i
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If tm_continue = True Then
'TimerStart '←これのため、マクロ実行中となるようなです
End If
End Sub
---------------------------------------------------------
|
|