
VBAのformat関数とは?指定した書式に従ってString型に変換するformat関数を解説
「20220101」のような文字列を、「2022/01/01」のように変換したいと思ったことはありませんか?format関数では、「2022/01/01」や「令和4年1月1日」のように変換できます。ここでは、日付と時刻の表示設定をメインに解説していきます。
1.format関数について
1-1.format関数とは
format関数とは、指定した書式に従ってString型に変換する関数です。主に数字の文字列を、年月日や時分秒のように変換する際に使用します。
1-2.format関数の構文
Format([変換したい文字列], [指定する書式])
変換したい文字列:変換したい文字列を指定します。
指定する書式:以下の使用例で説明する書式を指定します。ここで説明した書式以外にも多くの書式が存在します。
2.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引数には、上記以外にも多くの指定文字があります。用途に合わせて、組み合わせたり調べたりして活用してください。
コメント