
VBAのformat関数とは?指定した書式に従ってString型に変換するformat関数を解説
「20220101」のような文字列を、「2022/01/01」のように変換したいと思ったことはありませんか?format関数では、「2022/01/01」や「令和4年1月1日」のように変換できます。ここでは、日付と時刻の表示設定をメインに解説していきます。
1.VBAのformat関数について
1-1.format関数とは
format関数とは、指定した書式に従ってString型に変換する関数です。主に数字の文字列を、年月日や時分秒のように変換する際に使用します。
1-2.format関数の構文
Format([変換したい文字列], [指定する書式])
変換したい文字列:変換したい文字列を指定します。
指定する書式:以下の使用例で説明する書式を指定します。ここで説明した書式以外にも多くの書式が存在します。
2.VBA format関数の使用例
2-1.基本的な使用例
2-1-1.定義済みの書式
定義済みの書式には下記の6種類があります。
| 書式名 | 説明 |
| Long Date | システム日付の長い日付形式の書式に従って日付を表示します。 |
| Medium Date | ホストの言語バージョンで、中間の長さの日付書式を使用して日付を表示します。 |
| Short Date | システムの短い日付書式を使用して日付を表示します。 |
| Long Time | システムの長い時間形式を使用して時間を表示します。時間、分、秒が含まれます。 |
| Medium Time | 時間と分を、12時間の書式と 午前/午後を使用して表示します。 |
| Short Time | 24時間の形式を使用して時間を表示します。 |
Sub sample01()
Dim val As String
Dim str As String
str = "2022/12/31 10:20:30"
val = "General Date = " & Format(str, "General Date") & vbCrLf & _
"Long Date = " & Format(str, "Long Date") & vbCrLf & _
"Medium Date = " & Format(str, "Medium Date") & vbCrLf & _
"Short Date = " & Format(str, "Short Date") & vbCrLf & _
"Long Time = " & Format(str, "Long Time") & vbCrLf & _
"Medium Time = " & Format(str, "Medium Time") & vbCrLf & _
"Short Time = " & Format(str, "Short Time")
MsgBox val
End Sub実行結果:
2-1-2.ユーザーが定義する場合の指定文字
通常は、複数の指定文字を組み合わせて使用します。日付を表示するのに、下記のように表現できます。
Sub sample02()
Dim val As String
Dim str As String
str = "2022-1-2 1:02:03"
val = Format(str, "yyyy/mm/dd") & vbCrLf & _
Format(str, "yy/m/d") & vbCrLf & _
Format(str, "dddddd") & vbCrLf & _
Format(str, "ge/mm/dd") & vbCrLf & _
Format(str, "ggee/m/dd") & vbCrLf & _
Format(str, "gggee年mm月dd日")
MsgBox val実行結果:
2-2.特殊な書き方をする場合
2-2-1.大文字/小文字に変換する場合
指定した文字列内のすべてを変換してしまうので、注意してください。
Sub sample04()
Dim val As String
Dim str As String
val = "小文字→大文字 = " & Format("format", ">&&&&&&") & vbCrLf & _
"大文字→小文字 = " & Format("FORMAT", "<&&&&&&") & vbCrLf & _
"一部が大文字→すべて大文字 = " & Format("Format", ">&&&&&&")
MsgBox val
End Sub実行結果:
2-2-2.変換できない場合
変換できない文字列を指定した場合は、変換前の文字列が返されます。
Sub sample05()
Dim val As String
Dim str As String
val = "存在しない日付 = " & Format("9999-99-99", "General Date") & vbCrLf & _
"全角文字を小文字→大文字 = " & Format("format", ">&&&&&&")
MsgBox val
End Sub実行結果:
3.最後に
format関数の第2引数には、上記以外にも多くの指定文字があります。用途に合わせて、組み合わせたり調べたりして活用してください。








コメント