げげげっ!元号の表示形式が…


VBAのセミナーで、いつも表示形式の話をします。そうしたExcelの標準機能を理解していなかったら、マクロなんて作れるわけがありません。だってマクロは「Excelに対する指示・命令」なのですから、Excelにどんな機能があって、何ができるかを知っていなかったら、指示も命令も出せません。「VBA!VBA!」ってプログラミング的なことばかりやってたって、マクロは作れないんですよ。いくら日本語を勉強しても、いいストーリーは書けないんです。ま、いいや。で、そのセミナーで「日付を和暦で表示する」ってのも、最近(2019年3月現在)紹介しています。今年は元号が変わりますからね。旬な話題として。で、昨日のセミナーで、いつものようにやったら・・・まさに「げげげっ!」でした。

ちなみに、元号や和暦を表示する書式記号は、次のとおりです。

書式記号 表示
g 元号のアルファベット H
gg 元号の先頭1文字
ggg 元号(2文字) 平成
e 和暦年 31

今までは、こうでした。それが急に「gg」の表示が変わりました。Excel 2013とExcel 2016で比べてみましょう。どちらも、セルA1には「2019/03/07」という日付が入力されています。表示形式には「gg」を設定しました。

【Excel 2013】

【Excel 2016】

まさに「げげげっ!」でしょ。これ、2019年3月6日(水)のセミナーで気づきました。その前、セミナーでやったのは2月17日(日)です。間違いありません。このときは、確かに「平」でした。この間の、約2週間のどこかで変更されたんです。「㍻」ってw 今年(2019年)は、元号が変わります。当然、Excelなどでも、それに備えてアップデートが必要です。それに合わせてというか、そのついでにというか、変更したんでしょうね。ちなみに、Professional PlusとProPlusの両方で確認しました。

この表示形式を使って、平成生まれかどうかを判定するような仕組みは全滅です。

【Excel 2013】

【Excel 2016】

VBAは、さらに「げげげっ!」

表示形式が変わったのなら、VBAのFormat関数にも影響が出るでしょう。これ、検証してみて驚きました。Format関数の「gg」は、Excel 2016だけでなく、Excel 2003から全部変更されています。

Sub Macro1()
    MsgBox Format(Now, "gg")    ''2019/03/07
End Sub

【Excel 2003】

まとめると、次のように変更されています。すべて、それぞれのバージョンを起動して確認しました。

バージョン 表示形式 TEXT関数 Format関数
2003
2007
2010
2013
2016

TEXT関数は、セル内で使ったときも、VBAのWorksheetFunctionから呼び出したときも同じです。

今年は、元号が変わったり、消費税率が変わったりと、ただでさえ混乱が予想されるのに、これは勘弁して欲しいです。しかも、来年(2020年)はWindows 7とOffice 2010のサポートが切れます。おそらく多くの企業で、Excelの(といかOfficeの)バージョンを上げるでしょう。どのバージョンから、どのバージョンに上げるか分かりませんが、いずれにしても大混乱でしょう。