皆さんお元気ですか?
私は軽く胃腸炎とか謎の咳が続いたりとかぜんぜん元気じゃないです。それでも毎日頑張っています。
さて、今日はこんな関数を数行のコードでサクッと作る方法をご案内します。(サンプルファイルもあるよ)
ところで皆さんの会社では新元号の「令和」、どう対応していますか?もちろん西暦に変更ですよね^^
って、えっ!?会社的には新元号で行くって?ご愁傷様です。
なんだか「Windowsの令和対応、10連休前に間に合わない恐れ」みたいな記事が出ているそうで、天下のMicrosoftも日本のバタバタぶりに困惑しているのではないでしょうか。日本政府は天皇のお気持ち表明の意図や全国のエクセル使いのお気持ちをちゃんと汲んでほしかったです。さらにMicrosoftがパッチを配布しても勤め先の企業はそれを適用する気がないなんて宣言されちゃって絶望してる人もいるんじゃないでしょうか。皆さんがストレスで軽い胃腸炎とか謎の咳に悩まされていないか心配です。
もうけっこういろんな人がそういう関数とかマクロを書いて公開しているんじゃないかなと思いますが、それは一切見ず、私も簡単なものをシェアさせていただきます。
いや実は「令和」発表のずっと前からこのコード書いておいたんですよ。でもなんか忙しくてやる気もなんにも無くなっちゃってお蔵入りかな?なんて思ってたんですけど、残念な新聞記事も出ちゃってることですし、しばらくのあいだMicrosoftのパッチが届かない世界に閉じ込められているごく少数の人の中でも更に私が書いたいい加減なVBAコードでも何かしらの参考にしてくれる人がいればいいなって思って重い筆をとりました。久しぶりに。
こんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'自力で元号変換する関数(ワークシートでもVBAでも使えるよ!) Function JCalendar(myDate As Date) As String '定数の宣言 Const STR_GENGOU As String = "令和" '←新元号を入れてね Const DATE_CHANGE As Date = #5/1/2019# '←開始日を入れてね 'もし、引数に指定した日付が定数で指定した開始日以降だったら・・・ If myDate >= DATE_CHANGE Then '関数の戻り値に新元号で日付をセット JCalendar = STR_GENGOU & Year(myDate) - Year(DATE_CHANGE) + 1 & Format(myDate, "年m月d日") 'じゃなかったら・・・ Else '関数の戻り値にFormat関数まかせの元号で日付をセット(そのうちこの1行で済む日がくるさそれまでがんばれ) JCalendar = Format(myDate, "ggge年m月d日") End If End Function |
サンプルファイルもおいときます。
custom_gengou.xls
「元年」じゃなくて「1年」と表示されちゃいますけど、そこはご愛嬌で。
そこまで対応するとコードが長くなってしまって結局読む気が失せてしまいますので。。。
また、新元号に対応するMicrosoftのパッチが適用されたならば、こんな回りくどいことしてないで皆さん迷わずTEXT関数(ワークシート上)とかFormat関数(VBA上)とかを使ってくださいね。
このサンプルは、あくまでも新元号に自力で対応しなければならないかわいそうな会社のかわいそうな人のためのものです。
とりあえず雑ですが今日はこれまで。
ではまた。
最近のコメント