Excel VBAの「TimeSerial 関数」について解説します。
TimeSerial 関数とは
Excel VBA の TimeSerial 関数は、時,分,秒を表す3つの数値からシリアル値 Variant (Date) を返します。
シリアル値は Format関数を併用すれば、さまざまな表示形式に変換することができます。
では、TimeSerial 関数の構文や引数の設定など、実際の使い方について解説していきたいと思います。
TimeSerial 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
TimeSerial(hour, minute, second)
引数
次の3つの引数は【必須】省略できません。データ型はすべて Variant(Integer)です。
引数 | 説明 |
---|---|
houre | 0~23 の範囲の 時 を表す数値(式)を指定します |
minute | 0~59 の範囲の 分 を表す数値(式)を指定します |
second | 0~59 の範囲の 秒 を表す数値(式)を指定します |
特定の時刻の前後の時間数、分数、または秒数を表す任意の数式を使用して、引数ごとに相対時刻で指定することもできます。マイナス指定なら前を示し、プラス指定なら後を示します。
戻り値
戻り値 | 説明 |
---|---|
シリアル値 | 特定の時、分、秒を表す Variant (Date) を返します |
いずれかの引数がその引数の正常な範囲を超えた場合、必要に応じて次に大きい単位に繰り上がります。 たとえば、75分を指定すると、1時間と15分として評価されます。
引数のいずれか1つでも Integer型の範囲(-32,768~32,767)を超えるとエラーが発生します。
また、3つの引数で指定された時刻によって、日付が利用可能な日付範囲を超えたときもエラーが発生します。
解説(使用例)
TimeSerial 関数の使用例で解説します。
TimeSerial 関数の戻り値を確認するサンプル
TimeSerial 関数の戻り値とFormat関数で書式設定して表示するサンプルです。
'■TimeSerial関数の戻り値を確認するサンプル
Sub TimeSerial_Sample()
'▼引数と戻り値用の変数を宣言
Dim ihh As Integer
Dim imm As Integer
Dim iss As Integer
Dim dt As Date
'▼各引数の値をInputBoxで入力してTimeSerial値を取得
ihh = InputBox("「時」を数値で入力してください")
imm = InputBox("「分」を数値で入力してください")
iss = InputBox("「秒」を数値で入力してください")
dt = TimeSerial(ihh, imm, iss)
'▼MsgBoxで戻り値を表示
MsgBox _
"【TimeSerial(" & ihh & "," & imm & "," & iss & _
")の戻り値】" & vbCrLf & _
"Date値:" & dt & vbCrLf & _
"Format書式1:" & Format(dt, "h:mm:ss") & vbCrLf & _
"Format書式2:" & Format(dt, "h時m分s秒")
End Sub
▼引数と戻り値用の変数を宣言
4~6行目、3つの引数(ihh、imm、iss)を格納する変数をInteger型で宣言
7行目、戻り値格納用変数(dt)をDate型で宣言
▼各引数の値をInputBoxで入力してTimeSerial値を取得
9~11行目、各引数を入力するよう InputBox を表示します。
12行目、TimeSerial 関数の取得値を変数に代入しています。
▼MsgBoxで戻り値を表示
14~19行目、”Date値:” と “Format書式1:” と “Format書式2:” の値を比較できるように表示します。
実行結果1
引数に「5」,「5」,「5」を入力した結果の MsgBox 画像がこちらです。
Date値:TimeSelial 関数の戻り値では時刻部分だけ表示されます。
Format(dt, “h:mm:ss”):Date値と同じ表示ですが、書式を“h:m:s” にすれば 5:5:5 のように表示できます。
Format(dt, “h時m分s秒”):「:」の部分を文字「h時m分s秒」に置き換えて表示しています。
実行結果2
引数に「25」,「10」,「60」を入力した結果の MsgBox 画像がこちらです。
Date値:TimeSelial 関数の戻り値では時刻部分だけでなく日付(年月日)部分も表示されています。また、秒数部分は桁上がりしたため「0」になり、分の部分に桁上がり下「1」がプラスされて「11」になっています。
Format(dt, “h:mm:ss”):書式設定で時刻だけの表示にすれば、日付を表示しないようにできます。
Format(dt, “h時m分s秒”):「:」の部分を文字「h時m分s秒」に置き換えて表示しています。
VBAでは「シリアル値」の起点は 1899年12月30日からの日数 です。TimeSelial 関数の引数に1日を超える値を設定した場合、日付がセットされて表示されてしまいます。
日付・時刻関数の使用例について
Date 関数のほか「日付・時刻」の関数について解説しているこちらの記事もご覧いただければ幸いです。
Timer など覚えておきたい日付時刻の処理について、より詳しい解説記事がこちらです。サンプルコードも複数掲載していますので是非ご覧ください。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA TimeSerial 関数は、「時」,「分」,「秒」を表す3つの引数からシリアル値 Variant (Date) を返します。
シリアル値は Format関数の併用で、さまざまな表示形式に書式設定することができます。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;