Dim A, B
'時間の型を変換
A = "17:1:2"
B = Format(A, "hh時mm分ss秒") '"17時01分02秒"
B = Format(A, "hh:mm:ss") '"17:01:02"
B = Format(A, "hh") '"17"
B = Format(A, "nn") '"01"
B = Format(A, "ss") '"02"
B = Format(A, "hh:mm:ss AM/PM") '05:01:02 PM"'数値4桁を日付型の時間に変換
A = 1701
B = TimeValue(Format(A, "@@:@@")) '17:01'日付+時間のデータから一部データを取得
A = "2020/1/1 17:1:2"
B = TimeValue(Format(A, "hh:mm:ss")) '17:01:02
B = CDate(Format(A, "yyyy/mm/ss")) '2020/01/01
では、解説していきます。
VBAでFormatを使って時間の型を変換する
VBAでFormatを使って時間の型を変換する方法について、ご紹介します。
使い方(Format)
まず、Formatの使い方です。次のようにFormatへ入力します。
『変換後の時間 = Format(時間, 書式)』
書式には、次のようなものがあります。
長い時間に型を変換:"hh時mm分ss秒"
短い時間に型を変換:"hh:mm:ss"
時間だけ取得:"hh"
分だけ取得:"nn"
秒だけ取得:"ss"
12時間表記に変換:"hh:mm:ss AM/PM"
では、具体的なVBAコードを使って説明していきます。
長い時間に型を変換
時間を長い時間の型に変換してみます。Formatに"hh時mm分ss秒"と入力します。
時間『"17:1:2"』を長い時間の型に変換するVBAコードです。
Sub TEST1()
Dim A, B
A = "17:1:2"
'長い時間に変換
B = Format(A, "hh時mm分ss秒")
MsgBox B
End Sub
実行してみます。
長い時間に変換
結果は、『17時01分02秒』となりました。
長い時間の型に変換できています。
短い時間に型を変換(hh:mm:ss)
時間を短い時間の型に変換してみます。Formatに"hh:mm:ss"と入力します。
時間『"17:1:2"』を短い時間の型に変換するVBAコードです。
Sub TEST2()
Dim A, B
A = "17:1:2"
'短い時間に変換
B = Format(A, "hh:mm:ss")
MsgBox B
End Sub
実行してみます。
短い時間に変換
結果は、『17:01:02』となりました。
短い時間の型に変換できています。
時だけ取得
時間から時だけを取得してみます。Formatに"hh"と入力します。
時間『"17:1:2"』から時だけを取得するVBAコードです。
Sub TEST3()
Dim A, B
A = "17:1:2"
'時だけを取得
B = Format(A, "hh")
MsgBox B
End Sub
実行してみます。
時だけ取得
結果は、『17』時となりました。
時間から、時だけを取得できています。
分だけ取得
時間から分だけを取得してみます。Formatに"nn"と入力します。
時間『"17:1:2"』から分だけを取得するVBAコードです。
Sub TEST4()
Dim A, B
A = "17:1:2"
'分だけを取得
B = Format(A, "nn")
MsgBox B
End Sub
実行してみます。
分だけ取得
結果は、『01』分となりました。
時間から、分だけを取得できています。
秒だけ取得
時間から秒だけを取得してみます。Formatに"ss"と入力します。
時間『"17:1:2"』から秒だけを取得するVBAコードです。
Sub TEST5()
Dim A, B
A = "17:1:2"
'秒だけを取得
B = Format(A, "ss")
MsgBox B
End Sub
実行してみます。
秒だけ取得
結果は、『02』秒となりました。
時間から、秒だけを取得できています。
12時間表記に変換
時間を12時間表記に変換してみます。Formatに"hh:mm:ss AM/PM"と入力します。
時間『"17:1:2"』を12時間の表記に変換するVBAコードです。
Sub TEST6()
Dim A, B
A = "17:1:2"
'12時間の表記に変換
B = Format(A, "hh:mm:ss AM/PM")
MsgBox B
End Sub
実行してみます。
12時間の表記に変換
結果は、『05:01:02 PM』となりました。
12時間の表記に変換できています。
Formatを使って数値から時間に変換
Formatを使えば、数値から時間に変換することができます。
数値4桁はTimeValueで時間に変換できない
数値を日付型の時間に変換するには、TimeValueを使います。
だた、数値4桁の値を直接、日付型の時間に変換はできません。
数値『1701』を日付型の時間に変換しようとするVBAコードです。
これはエラーとなります。
Sub TEST7()
Dim A, B
A = 1701
'日付型の時間に変換したい
B = TimeValue(A) 'エラーとなります
End Sub
実行してみます。
数値4桁を日付型の時間に変換しようとしてエラー
結果は、エラーとなりました。
Formatの"@@:@@"を使って数値4桁を時間に変換
数値4桁を、時間に変換したいときは、Formatが使えます。
手順としては、
・①Formatの"@@:@@"を使って時間の型に変換
・②TimeValueで日付型の時間に変換
という流れです。
数値『1701』を日付型の時間に変換してみます。
Sub TEST8()
Dim A, B, C
A = 1701
'時間の型に変換
B = Format(A, "@@:@@")
'日付型の時間に変換
C = TimeValue(B)
MsgBox C
End Sub