Sub Bar()
Dim i As Integer
STOP_FLAG = False
Do
'待ちを入れるのと、Stopボタンを受け入れる
For i = 1 To 3000
Sleep (100) '[ms]
DoEvents
If STOP_FLAG Then
MsgBox "Time Bar 終了"
Exit Sub
End If
Next i
a = 9.75
ActiveSheet.Shapes("直線 1").Select
Selection.ShapeRange.IncrementLeft (a)
a = a + 2
Loop
End Sub
マクロをずっと動かした状態だといろいろと制約がありますが、
OnTime メソッドを使用することで回避できる部分もあります。
標準モジュールに下記を書きます。
Public scheduleTime As String Sub StartBar() If scheduleTime <> "" Then StopBarProc False End If MoveLine End Sub Sub StopBar() StopBarProc End Sub Sub StopBarProc(Optional msgMode As Boolean = True) If scheduleTime <> "" Then Application.OnTime TimeValue(scheduleTime), "MoveLine", , False scheduleTime = "" If msgMode = True Then MsgBox "Time Bar 終了" End If Else If msgMode = True Then MsgBox "Time Bar は動いていません" End If End If End Sub Sub MoveLine() Worksheets("Sheet1").Shapes("直線 1").IncrementLeft 9.75 '// シート名、オートシェープは個別に設定 scheduleTime = Format(DateAdd("m", 5, Now()), "HH:MM:SS") '// 実行間隔の指定 Application.OnTime TimeValue(scheduleTime), "MoveLine" End Sub
ThisWorkbook モジュールに下記を書きます(終了時の後処理)。
Private Sub Workbook_BeforeClose(Cancel As Boolean) StopBar False End Sub
全体の動作は、StartBar と StopBar で制御します。
マクロをずっと動かした状態だといろいろと制約がありますが、
OnTime メソッドを使用することで回避できる部分もあります。
標準モジュールに下記を書きます。
Public scheduleTime As String Sub StartBar() If scheduleTime <> "" Then StopBarProc False End If MoveLine End Sub Sub StopBar() StopBarProc End Sub Sub StopBarProc(Optional msgMode As Boolean = True) If scheduleTime <> "" Then Application.OnTime TimeValue(scheduleTime), "MoveLine", , False scheduleTime = "" If msgMode = True Then MsgBox "Time Bar 終了" End If Else If msgMode = True Then MsgBox "Time Bar は動いていません" End If End If End Sub Sub MoveLine() Worksheets("Sheet1").Shapes("直線 1").IncrementLeft 9.75 '// シート名、オートシェープは個別に設定 scheduleTime = Format(DateAdd("m", 5, Now()), "HH:MM:SS") '// 実行間隔の指定 Application.OnTime TimeValue(scheduleTime), "MoveLine" End Sub
ThisWorkbook モジュールに下記を書きます(終了時の後処理)。
Private Sub Workbook_BeforeClose(Cancel As Boolean) StopBar False End Sub
全体の動作は、StartBar と StopBar で制御します。
動きました。On Timeメソッド覚えました。ありがとうございました。
動きました。On Timeメソッド覚えました。ありがとうございました。