「エクセル マクロ 日付 和暦」
「excel 日付の年を平成表記にするマクロ」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
Excelで日付は、1900年1月1日が「1」で、1日経過するごとに1加算される数値で、書式を設定することで「2014年3月10日」としたり「平成26年3月10日」したりできます。
この考え方は、マクロ・VBAからExcelを操作するときも、もちろん同じです。
参考になりそうなマクロを2つご紹介しておきます。
今日の日付を和暦で入力するサンプルマクロ
まずは日付データを入力するときに、書式を設定するマクロです。
今日の日付を入力して、書式設定を行って和暦表示にするマクロです。
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 日付の年を平成表記にするマクロ」
という検索をした方の参考になりそうなマクロをご紹介しておきます。
日付データが入力済みのときに、書式を設定して元号を含む和暦表示にするマクロです。
Const FORMAT_DATE = " [DBNum3]ggge年mm月dd日"
If TypeName(Selection) <> "Range" Then Exit Sub
Dim rng As RangeFor 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
- Newer:2014-3-3・10(月)19:00~ はじめてのExcel VBA講座の講師を担当しました(女性3 男性3)
- Older:Excelマクロ入門講座 2014-5-17(土)10:30より
Home » Excel VBA Rangeオブジェクト » 表示形式 » Excel VBAで日付フォーマットを設定する