📊 Excel VBA Top100
🎨

FormatDateCells

書式設定

選択範囲の日付セルを指定した書式で一括設定します

選択した日付セルの表示形式を指定したフォーマット(yyyy/mm/dd・yyyy年m月d日・mm/dd/yyyyなど)に一括変換するマクロです。システムごとに異なる日付形式のデータを統一フォーマットに整えたり、国際的な書類に合わせた形式に変換したりする際に便利です。書式設定ダイアログを開いて一つひとつ設定する手間を省き、大量の日付セルに一括でフォーマットを適用できます。日付の値自体は変更されないため、計算への影響もありません。内部ではNumberFormatLocalプロパティに日付コードを設定しており、Excelが内部的に保持するシリアル値には一切手を加えません。そのため表示形式を変更しても日付を使った計算式には影響しません。ConvertTextToNumbersで数値化した後に本マクロを適用する流れにすれば、テキストとして取り込まれた日付データも正しく整形できます。

FormatDateCells デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 対象範囲を選択してから FormatDateCells を実行します

🎯 活用シーン

  • ✓海外取引先向けの書類で日付形式をmm/dd/yyyy形式に一括変換して、国際標準に合わせた資料を作成したいとき
  • ✓異なるシステムからインポートした日付データの表示形式をyyyy/mm/dd形式に統一して、見やすい一覧表を作りたいとき
  • ✓報告書の日付表示を「2024年1月15日」形式に統一して、正式な文書として提出できる資料に整えたいとき
  • ✓複数のシステムから集めた注文データの日付表記をyyyy/mm/dd形式に統一し、突合作業をしやすくしたいとき
  • ✓英語圏の取引先に提出するレポートで日付をmm/dd/yyyy形式に一括変換したいとき

💡 実装のヒント

  • ▸日付が文字列として保存されている場合、書式設定を変更しても見た目が変わりません。ConvertTextToNumbersで数値型に変換してから適用してください。
  • ▸表示形式コードはExcelの標準表記に従います。カスタム形式の作成はセルの書式設定ダイアログの「表示形式」タブで確認できます。
  • ▸和暦表示(令和・平成など)も可能です。ggge年m月d日の形式コードを使用してください。
  • ▸複数の表示形式を切り替えて使う場合は、形式コードを引数化しておくとマクロを何本も用意せずに済みます。
  • ▸タイムゾーンをまたぐデータを扱う場合、日付部分だけでなく時刻部分の表示形式も合わせて検討してください。

💻 VBAコード

' FormatDateCells
' -----------------
' Macro Name: FormatDateCells
' Description: 選択範囲の日付セルを指定した書式で一括設定します
' Parameters: なし
' Returns: なし
' Usage: 対象範囲を選択してから FormatDateCells を実行します
' -----------------

Sub FormatDateCells()
    On Error GoTo ErrorHandler

    Dim rng As Range
    Dim formatStr As String

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection

    formatStr = InputBox("日付書式を入力してください", "日付書式", "yyyy/mm/dd")
    If formatStr = "" Then Exit Sub

    rng.NumberFormat = formatStr

    MsgBox "日付書式を設定しました: " & formatStr, vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub