Home » Excel VBA Rangeオブジェクト » 表示形式 » Excel VBAで日付フォーマットを設定する

Excel VBAで日付フォーマットを設定する

対象:Excel2003, Excel2007, Excel2010, Excel2013

「エクセル マクロ 日付 和暦」
「excel 日付の年を平成表記にするマクロ」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

Excelで日付は、1900年1月1日が「1」で、1日経過するごとに1加算される数値で、書式を設定することで「2014年3月10日」としたり「平成26年3月10日」したりできます。

この考え方は、マクロ・VBAからExcelを操作するときも、もちろん同じです。

[スポンサードリンク]

参考になりそうなマクロを2つご紹介しておきます。

今日の日付を和暦で入力するサンプルマクロ

まずは日付データを入力するときに、書式を設定するマクロです。

今日の日付を入力して、書式設定を行って和暦表示にするマクロです。

Sub アクティブセルに今日の日付を和暦で入力する()
 With ActiveCell
  .Value = Date
  .NumberFormatLocal = "ggge年m月d日"
 End With
End Sub

上記のマクロを実行すると、アクティブなセルに「平成26年3月10日」という、元号を含んだ書式で今日の日付が入力されます。

今日の日付を返すVBAの関数・Dateを使ってアクティブなセルに今日の日付を入力し、

 With ActiveCell
  .Value = Date

RangeオブジェクトのNumberFormatLocalプロパティで「ggge年m月d日」形式の書式を設定しています。

  .NumberFormatLocal = "ggge年m月d日"

この日付書式の設定に使える記号は、Excelの[セルの書式を設定]ダイアログ-[表示形式]で使う書式設定記号と同じです。

日付を和暦表示に変更するサンプルマクロ

もう1つ
「excel 日付の年を平成表記にするマクロ」
という検索をした方の参考になりそうなマクロをご紹介しておきます。

日付データが入力済みのときに、書式を設定して元号を含む和暦表示にするマクロです。

Sub 選択されている日付の書式を変更する()
 Const FORMAT_DATE = " [DBNum3]ggge年mm月dd日"

 If TypeName(Selection) <> "Range" Then Exit Sub

 Dim rng As Range
 For Each rng In Selection
  If IsDate(rng.Value) = True Then
   rng.NumberFormatLocal = FORMAT_DATE
  End If
 Next
End Sub

日付を、元号表記に変更したいセルを選択しておいてから上記のマクロを実行すると、「平成26年03月10日」といった書式に変更されます。

汎用的に使うことを想定して、どういう日付書式にするかを定数・FORMAT_DATEで指定するようにしています。

 Const FORMAT_DATE = " [DBNum3]ggge年mm月dd日"

数値が全角表示されるのは、個人的にはとっても気持ち悪いと感じますが、日付の年を元号表記にしたいという場合、数値を全角で表示したいというケースも少なくないので、全角表示になるよう「[DBNum3]」を含んだ書式設定にしてみました。

選択されているセル範囲に対してループを回して

 For Each rng In Selection

もしそのデータが日付ならば、

  If IsDate(rng.Value) = True Then

書式を変更しています。

   rng.NumberFormatLocal = FORMAT_DATE

選択されているのがRangeオブジェクト(セル・セル範囲)ではないときにエラーとならないよう、ループ処理に入る前に、TypeName関数を使って選択されているのが何かを調べて、Rangeオブジェクトではないときにマクロを終了しています。

 If TypeName(Selection) <> "Range" Then Exit Sub

最終更新日時:2020-03-26 13:42

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 表示形式 » Excel VBAで日付フォーマットを設定する

「表示形式」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.