Home » ExcelVBA Rangeオブジェクト » 表示形式 » マクロで日付書式を設定・変更する


マクロで日付書式を設定・変更する

対象:Excel2003, Excel2007, Excel2010, Excel2013

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

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

この考え方は、マクロ・VBA(Visual Basic for Applications)から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日"

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

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

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

汎用的に使うことを想定して、どういう日付書式にするかを定数・FORMAT_DATEで指定するようにしています。
 Const FORMAT_DATE = " [DBNum3]ggge年mm月dd日"

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

選択されているセル範囲に対してループを回して
 For Each rng In Selection

もしそのデータが日付ならば、
 With rng
  If IsDate(.Value) = True Then

書式を変更しています。
   .NumberFormatLocal = FORMAT_DATE

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

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 表示形式 » マクロで日付書式を設定・変更する

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » 表示形式 » マクロで日付書式を設定・変更する

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

.