|
n さんこんにちは ありがとうございます
>SelectionChangeで変更時間のみを記録して、OnTime実行時にチェック&再セットしてはいかがでしょう。
コードのご提示ありがとうございます
なるほどです、勉強させていただきます
ありがとうございました
>#常に上書き保存する運用で良いかどうかは別として。
了解です
今回はとりあえずで、みたいなです。
>>編集継続のためのTimerStartをどのように呼べばいいでしょうか
についてなんですが
ご提示のコードでも同じ状況になってしまいました
で
Private Sub UserForm_Activate()
Dim i As Integer
の i を、外出しで希望に操作がかないました
ユーザーフォームを閉じてしまえば
For i = 30 To 0 Step -1
も、閉じているような気がしていたのですが違っていたようです
ムム〜 自分的に新発見みたいな・・(~_~;)
何か有りましたらコメントよろしくお願い致します
'-------------------------------------------------
'標準モジュール
Option Explicit
Public changeTime As Date
Public setTime As Date
Public Const interval = "0:00:30"
Sub timerStart()
changeTime = Now
setTime = Now + TimeValue(interval)
Application.OnTime setTime, "TimeCheck"
End Sub
Sub TimeCheck()
If setTime - TimeValue(interval) < changeTime Then
setTime = changeTime + TimeValue(interval)
Application.OnTime setTime, "TimeCheck"
Else
Call test
End If
End Sub
Sub test()
UserForm1.Show
End Sub
'-------------------------------------------------
'UserForm1
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private tm_continue As Boolean
Dim i As Integer
Private Sub CommandButton1_Click()
tm_continue = True
End Sub
Private Sub CommandButton2_Click()
i = 0
Unload Me
MsgBox "close" 'Close処理
End Sub
Private Sub UserForm_Activate()
'Dim i As Integer
Me.Repaint
For i = 30 To 0 Step -1
Me.Label1 = i
'Me.Label3 = i
DoEvents
If tm_continue Then Exit For
Sleep 1000
Next i '←ここで止まった
Unload Me
If tm_continue Then
setTime = Now + TimeValue(interval)
Application.OnTime setTime, "TimeCheck"
Else
'On Error Resume Next
'If UserForm1.Visible = True Then
MsgBox "close" 'Close処理
'Else
'End If
'On Error GoTo 0
End If
End Sub
'-------------------------------------------------
'ThisWorkbookモジュール
Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
changeTime = Now
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime setTime, "TimeCheck", , False
End Sub
|
|