概要
TimeValue
関数は、Excel VBAで時刻を表す文字列をDate
型の時刻に変換するための関数です。文字列として記述された時刻をプログラム内で扱える形式に変換することで、時刻の計算や比較、操作が可能になります。入力の形式は、一般的な時刻表現であれば柔軟に対応でき、使いやすい関数です。
構文
TimeValue(時刻の文字列)
パラメータ
- 時刻の文字列
時刻を表す文字列を指定します。一般的な時刻の形式であれば変換が可能です(例:「12:30:45」や「2:30 PM」など)。
戻り値
TimeValue
関数は、指定された時刻の文字列をDate
型の時刻として返します。日付情報は含まれず、時刻のみが保持されます。
説明
TimeValue
関数は、文字列で表された時刻をVBAが認識可能な時刻型に変換するため、ユーザー入力やデータベースから取得した文字列データを時刻型として操作する際に非常に便利です。
-
「hh:mm:ss」形式や「h:mm AM/PM」形式の文字列に対応しています。
-
無効な時刻形式の文字列を指定するとエラーが発生するため、入力値のチェックが必要です。
使用例
基本的な使用例 - 文字列を時刻に変換
Sub ConvertStringToTime()
Dim timeValue As Date
timeValue = TimeValue("14:30:00")
MsgBox "変換された時刻は: " & Format(timeValue, "hh:mm:ss") ' 結果: "14:30:00"
End Sub
この例では、「14:30:00」という文字列を時刻に変換し、表示しています。
12時間制の時刻の変換
Sub Convert12HourFormat()
Dim timeValue As Date
timeValue = TimeValue("2:45 PM")
MsgBox "変換された時刻は: " & Format(timeValue, "hh:mm:ss AM/PM") ' 結果: "02:45:00 PM"
End Sub
この例では、12時間制で表現された文字列「2:45 PM」を時刻型に変換しています。
セルの文字列から時刻を生成
Sub ConvertCellValueToTime()
Dim timeValue As Date
timeValue = TimeValue(Range("A1").Value) ' セル A1 の値を時刻に変換
MsgBox "セルの時刻は: " & Format(timeValue, "hh:mm:ss")
End Sub
セルA1
に入力された時刻文字列を時刻型に変換して表示します。
応用例
時刻の比較処理
指定した時刻が午前か午後かを判定するスクリプトです。
Sub CheckAMPM()
Dim inputTime As Date
inputTime = TimeValue("11:30 AM")
If inputTime < TimeValue("12:00 PM") Then
MsgBox "指定された時刻は午前です。"
Else
MsgBox "指定された時刻は午後です。"
End If
End Sub
この例では、指定した時刻が午前か午後かを比較し、結果を表示します。
スケジュールの時間設定
文字列から生成した時刻を使って、スケジュールの開始時刻を設定します。
Sub SetScheduleTime()
Dim startTime As Date
startTime = TimeValue("09:00:00")
If Time >= startTime Then
MsgBox "スケジュールの時間です!"
Else
MsgBox "まだ開始時間ではありません。"
End If
End Sub
このスクリプトは、現在の時刻がスケジュールされた開始時刻を過ぎているかどうかをチェックします。
注意点
-
TimeValue
関数は無効な形式の時刻を変換しようとするとエラーが発生します。特に、時刻の入力がユーザーから行われる場合は、入力値の形式が正しいかどうかの検証を行うことが重要です。 -
変換されるのは時刻のみで、日付情報は含まれません。日付が必要な場合は、別途
Date
関数やDateSerial
関数を使用して日付情報を追加する必要があります。 -
AM/PMの記載が不適切な場合(例:“13:00 PM”など)、エラーが発生するため、時刻の形式には注意してください。
TimeValue
関数は、時刻を表す文字列をプログラムで扱いやすい形式に変換し、時刻データの操作を柔軟にする強力なツールです。入力データのチェックを適切に行い、効果的に活用してください。