日付時刻 実行中のマクロを指定の時刻まで停止WaitメソッドTimeValue関数

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Sub TimeWait(lngSecond As Long)
'************************************
'指定した秒数の間マクロを止める
'************************************

'引数 lngSecond には秒数を!
Dim newHour As String
Dim newMinute As String
Dim newSecond As String
Dim waitTime As Variant

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + lngSecond
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime

End Sub


Private Sub test()
Debug.Print Now()
Call TimeWait(10)
Debug.Print Now()
'2010/01/09 17:22:16
'2010/01/09 17:22:26
End Sub

Wait メソッド

実行中のマクロを指定の時刻まで停止します。指定の時間に達した場合、True を返します。

重要 Wait メソッドは、Excel のすべての動作を停止させますが、印刷や再計算などのバックグラウンド処理は続行されます。
  • 構文
  • expression.Wait(Time)
  • expression
    必ず指定します。対象となる Application オブジェクトを表すオブジェクト式を指定します。
  • Time
    必ず指定します。バリアント型 (Variant) の値を使用します。マクロを再開する時刻を Excel の日付の書式で指定します。

Wait メソッドの使用例

次の使用例は、実行中のマクロを当日の午後 6 時 23 分まで停止します。
Option Explicit

Application.Wait "18:23:00"
次の使用例は、実行中のマクロを約 10 秒間停止します。
Option Explicit

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
次の使用例は、10 秒を過ぎるとメッセージを表示します。
Option Explicit

If Application.Wait(Now + TimeValue("0:00:10")) Then
    MsgBox "時間が過ぎました。"
End If

TimeValue 関数

時刻を表すバリアント型 (内部処理形式 Date の Variant) の値を返します。

  • 構文

  • TimeValue(time)
  • 引数

  • time
    は必ず指定します。引数 time には、通常 0:00:00 (12:00:00 AM) ~ 23:59:59 (11:59:59 PM) の範囲の時刻を表す文字列式を指定します。また、この範囲で時刻を表す任意の式を指定することもできます。引数 time に Null 値が含まれると、Null 値を返します。
  • 解説

  • 12 時間制または24 時間制のどちらを使って時刻を指定してもかまいません。たとえば、"2:24PM" と "14:24" は、両方とも有効な引数となります。
  • 引数 time が日付の値を含む場合、TimeValue 関数はその日付を戻り値に含めません。ただし、引数 time に正しくない値を指定したときには、エラーが発生します。

TimeValue 関数の使用例

次の例は、TimeValue 関数を使って、文字列を時刻に変換します。時刻リテラルを使って、バリアント型 (Variant) や日付型 (Date) の変数に時刻を直接代入することもできます。たとえば、MyTime = #4:35:17 PM# のように指定します。
Option Explicit

Dim MyTime
MyTime = TimeValue("4:35:17 PM")            ' 時刻を返します。

 

 

 

2000年01月01日|[VBサンプルコード]:[日付時刻]