VBAで取得した日付を指定の形式に変換する方法

プログラミング

はじめに

業務や個人のエクセル操作で、日付データを特定の形式で整形したい場面は多い。
たとえば、 31-12-2024December 31, 20242024-12-31 のように変換する必要が生じる場合がある。この課題は、VBAの機能を活用することで簡単に解決できる。

本記事では、日付フォーマットの変換方法を具体例とともに解説する。


スポンサーリンク
スポンサーリンク

日付フォーマットの変換方法

日付のフォーマットを変更する際には、Format 関数を用いる。この関数を活用すれば、柔軟に日付の整形が可能だ。


1. 基本構文

Format 関数の基本構文は以下の通り。

Format(Expression, FormatString)
  • Expression: フォーマット対象となる日付または値。
  • FormatString: 希望するフォーマットを示す文字列。

2. 使用例

以下のコードは、今日の日付を取得し、異なる形式に整形する例である。

Sub FormatDateExample()
Dim originalDate As Date
Dim formattedDate As String

' 今日の日付を取得
originalDate = Date

' フォーマットを指定して変換
formattedDate = Format(originalDate, "yyyy-mm-dd") ' 結果: 2024-12-31
Debug.Print formattedDate

formattedDate = Format(originalDate, "dd-mm-yyyy") ' 結果: 31-12-2024
Debug.Print formattedDate

formattedDate = Format(originalDate, "mmmm dd, yyyy") ' 結果: December 31, 2024
Debug.Print formattedDate

formattedDate = Format(originalDate, "ddd, mmmm dd") ' 結果: Tue, December 31
Debug.Print formattedDate
End Sub

3. カスタムフォーマット文字列の解説

以下は、Format 関数で使用可能なフォーマット指定子の一覧である。

記号 説明 使用例 結果
yyyy 年(4桁) yyyy 2024
yy 年(2桁) yy 24
mm 月(2桁) mm 12
m 月(1桁または2桁) m 12
dd 日(2桁) dd 31
d 日(1桁または2桁) d 31
dddd 曜日(フルスペル) dddd Tuesday
ddd 曜日(短縮形) ddd Tue
mmmm 月(フルスペル) mmmm December
mmm 月(短縮形) mmm Dec

注意点

  1. データ型の確認
    フォーマットを適用する前に、対象が日付型であることを確認する。文字列型の場合は、CDate 関数を使い日付型に変換する必要がある。
Dim dateStr As String
Dim dateValue As Date
dateStr = "2024/12/31"
dateValue = CDate(dateStr)
Debug.Print Format(dateValue, "dd-mm-yyyy") ' 結果: 31-12-2024
  1. ロケールの影響
    日付フォーマットはPCのロケール設定によって異なる動作をする場合がある。一貫した形式を得るには、フォーマット文字列を明確に指定するのが望ましい。

応用例:ユーザー入力を整形する

次のコードは、ユーザーが入力した日付をフォーマットして表示する。

Sub FormatUserInputDate()
Dim userInput As String
Dim parsedDate As Date
Dim formattedDate As String

' ユーザー入力を取得
userInput = InputBox("日付を入力してください (例: 2024/12/31)")

' 入力を日付型に変換
If IsDate(userInput) Then
parsedDate = CDate(userInput)

' フォーマットして表示
formattedDate = Format(parsedDate, "yyyy年mm月dd日")
MsgBox "フォーマット済みの日付: " & formattedDate
Else
MsgBox "有効な日付を入力してください。"
End If
End Sub

まとめ

VBAにおいても、日付のフォーマットを変更することは容易に可能であり、業務にて求められる場面は多く、効率を大幅に向上させられるだろう。

コメント