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
関数を使用して表示形式をカスタマイズできます。
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:00
~ 18:00
)であるため、範囲内であることが表示されます。
TimeValue 使用時の注意点
- 入力形式
TimeValue
は有効な時刻形式の文字列のみを受け付けます。無効な形式の場合、エラーが発生します。
例: 有効な形式
"10:30"
"2:45 PM"
- 日付部分を無視
- 入力が日付を含む場合でも、
TimeValue
は時刻部分のみを評価します。
- 入力が日付を含む場合でも、
まとめ
Excel VBA の TimeValue
関数は、文字列形式の時刻を時刻型に変換し、計算や比較を可能にする便利な関数です。主な活用ポイントは以下の通りです。
- 文字列を時刻型に変換
動的な時刻処理が可能に。 - 時刻の計算や比較に利用
時間差や範囲判定が簡単。 - セルの時刻値処理
セル値を変換して活用。