VBAで自動化 VBA一覧 日付・時刻 配列・データ操作

【VBA】TimeValue関数の使い方と活用方法:時刻の計算

Excel VBA の TimeValue 関数は、文字列として表現された時刻を時刻型(Date 型)として認識させるために使用します。この関数を活用することで、時刻を扱った計算や比較が簡単になります。

TimeValue 関数とは?

TimeValue 関数は、文字列形式の時刻を時刻型(Date 型)に変換する関数です。変換後の値は Excel が扱う「シリアル値」として内部的に表現されるため、時刻の計算や比較が可能になります。

【基本構文】

TimeValue(timeString)

  • timeString: 時刻を表す文字列(例: "14:30""2:45 PM")。
  • 戻り値: 時刻型(Date 型)としての時刻。

時刻の文字列を変換する

時刻の文字列を TimeValue を使用して時刻型に変換し、メッセージボックスで表示します。

Sub ExampleTimeValue()

Dim timeStr As String
Dim timeResult As Date

timeStr = "14:30" ' 時刻を文字列として設定
timeResult = TimeValue(timeStr) ' 時刻型に変換

MsgBox "変換後の時刻: " & timeResult

End Sub

結果
14:30:00(午後2時30分)が表示されます。

現在の時刻との比較

指定した時刻が現在の時刻より前か後かを判定します。

Sub CompareWithCurrentTime()

Dim timeStr As String
Dim timeResult As Date

timeStr = "12:00 PM"
timeResult = TimeValue(timeStr)

If timeResult > Time Then

MsgBox "指定した時刻は現在の時刻より後です。"

Else

MsgBox "指定した時刻は現在の時刻より前です。"

End If

End Sub

TimeValue を使った時刻の加算

指定した時刻に1時間30分を加算します。

Sub AddTime()

Dim timeStr As String
Dim timeResult As Date

timeStr = "08:00"
timeResult = TimeValue(timeStr) + TimeValue("1:30") ' 1時間30分を加算

MsgBox "新しい時刻: " & Format(timeResult, "hh:mm:ss")

End Sub

結果
09:30:00 が表示されます。

TimeValue を使った時刻の減算

2つの時刻の差を計算して、経過時間を表示します。

Sub SubtractTime()

Dim startTime As Date
Dim endTime As Date
Dim elapsedTime As Double

startTime = TimeValue("09:15")
endTime = TimeValue("11:45")
elapsedTime = endTime - startTime ' 経過時間を計算

MsgBox "経過時間: " & Format(elapsedTime, "h 時間 m 分")

End Sub

結果
2 時間 30 分 が表示されます。

時刻のフォーマットを変更する

TimeValue の結果は Date 型として返されるため、Format 関数を使用して表示形式をカスタマイズできます。

【VBA】文字列に変換するFormat関数

Sub FormatTimeValue()

Dim timeStr As String
Dim timeResult As Date

timeStr = "18:45"
timeResult = TimeValue(timeStr)

MsgBox "時刻のフォーマット: " & Format(timeResult, "hh:mm AM/PM")

End Sub

結果
06:45 PM のような形式で表示されます。

セルの値を時刻として処理する

セルに入力された値を時刻型に変換して処理する例です。

Sub ProcessCellTime()

Dim cellTime As Date

cellTime = TimeValue(Range("A1").Value) ' セル A1 の値を変換
MsgBox "セルの時刻: " & Format(cellTime, "hh:mm:ss")

End Sub

解説

  • セル A1 に時刻形式の文字列(例: "10:30")が入力されている場合に適用。

時間ごとの処理

指定した時刻範囲内での処理を行います。

Sub TimeRangeCheck()

Dim inputTime As Date
Dim startTime As Date
Dim endTime As Date

inputTime = TimeValue("15:00")
startTime = TimeValue("14:00")
endTime = TimeValue("18:00")

If inputTime >= startTime And inputTime <= endTime Then

MsgBox "指定した時刻は範囲内です。"

Else

MsgBox "指定した時刻は範囲外です。"

End If

End Sub

結果
15:00 は範囲内(14:0018:00)であるため、範囲内であることが表示されます。

TimeValue 使用時の注意点

  1. 入力形式
    • TimeValue は有効な時刻形式の文字列のみを受け付けます。無効な形式の場合、エラーが発生します。

    例: 有効な形式

    • "10:30"
    • "2:45 PM"
  2. 日付部分を無視
    • 入力が日付を含む場合でも、TimeValue は時刻部分のみを評価します。

まとめ

Excel VBA の TimeValue 関数は、文字列形式の時刻を時刻型に変換し、計算や比較を可能にする便利な関数です。主な活用ポイントは以下の通りです。

  1. 文字列を時刻型に変換
    動的な時刻処理が可能に。
  2. 時刻の計算や比較に利用
    時間差や範囲判定が簡単。
  3. セルの時刻値処理
    セル値を変換して活用。

-VBAで自動化, VBA一覧, 日付・時刻, 配列・データ操作