「H30.8.1」といった元号表記でエクセルに記入したい

暑いですね。
そして、僕は、今、仕事が溜まりまくっています (-_-;
にも関わらず、なのですが...。週末、仙台に行ってきました。
鹽竈神社(しおがまじんじゃ)という神社で、以下の「鹽竈神社 算額解義」という冊子を見かけ、購入しました。

sangaku-01
sangaku-02
sangaku-03

「算額」とは?
以下は、リンク先の記事から引用。

江戸時代には娯楽としても楽しまれ、日本独自に発展した数学「和算」。
人々は問題が解けたことを神仏に感謝し、神社や仏閣に和算の問題を奉納しました。
その解法を記して、神社や仏閣に奉納する絵馬のことを「算額」と言い、中には問題の解答を付けずに奉納されているものもあります。
鹽竈神社に現存する5面の算額は千葉胤秀(たねひで)ら当時の優れた和算家によって奉納されたもので、江戸時代の優れた算額のひとつに数えられます。
<引用元>塩竈市杉村惇美術館

ということで、購入したのは、小説原作で漫画、映画にもなった「天地明察」でも登場した「和算(日本で発達した算数・数学)」の、未解決(?)のお題に取り組んだ、という同人誌。
僕は別に数学得意じゃなんですが、こういうキワモノコンテンツはつい買ってしまいます (^^;


ところで、今回は、エクセルマクロで日付を入力するときの、やり方について。
以下のような相談をいただきました。
(可読性を高めるため、多少改変)

VBAで顧客管理システムを作成しているところです。

リストボックスから氏名を選んでテキストボックスにデータを表示するところまではできました。
実行ボタン(コマンドボタン)を押すとデータをセルに書き込むようにしたいと思っています。
ところが、生年月日(日付)表示形式「H38.2.17」だけがうまくいきません。

この相談に回答してみます。

ところが、生年月日(日付)表示形式「H38.2.17」だけがうまくいきません。

【以下は、新しいシートを作り、そこで試してください】

単に「H38.2.17」と書き込みたいということでしたら、以下で十分ですね。


Sub sample1()  
  Range("B1").Value = "H38.2.17"  
End Sub  

ですが、おそらくそういうご質問ではないのだろうと。
以下のようなプログラムを実行した結果、入力先のセルに「H30.7.30」というような表示をしたいということだろうと推察します。


'先頭の半角「H」は「平成」の意  
Sub sample2()  
  Range("B2").Value = #7/30/2018# '[1]  
End Sub  

なお、「平成38年」は存在し得ません。

平成が38年まで続いたとしたら、「2026年2月17日」が「平成38年2月17日」になったことでしょう。
ですが、今年5月から元号が令和になったので、令和の時代がしばらく続くとすると、「2026年2月17日」は「令和8年2月17日」です。
生年月日がかなり先の未来の日付というのも、通常の事務仕事ではあまり見られない例です。

あと、いただいたご質問ですと、先頭の「H」が半角ではなく、全角です。
等々考えると本当は「H38.2.17」というのは過去の日付のどこかのことか?ということは気になりますが、そういう問題は無視して、まずは、前記[1]のコードで入力先セルに「H30.7.30」(先頭の「H」は半角)と表示する方法を示します。
結論から書くと、以下のとおりです。


Sub sample3()  
   Range("B3").NumberFormatLocal = "[$-ja-JP]ge.m.d;@"   '[2]  
   Range("B3").Value = #7/30/2018#  
End Sub  

[2]の部分では、セルの書式を設定しています。
自動記録をしつつ、ご所望の書式になるよう、エクセルのダイアログからセルの書式設定をしてください。
すると、[2]のコードを作るのに必要な部品が得られます。
自動記録をしながら書式を設定すると、おそらく、以下の類のコードを得られるでしょう。


Sub Macro1()  
 '  
 ' Macro1 Macro  
 '  
  Selection.NumberFormatLocal = "[$-ja-JP]ge.m.d;@"  
End Sub  

[2]のようなコードは、これを参考に(というか、必要な部分をコピペしてきて)実装します。
なお、以下のマクロを実行すると、セルB4の表示は、「R8.2.17」となります。


Sub sample4()  
   Range("B4").NumberFormatLocal = "[$-ja-JP]ge.m.d;@"  
   Range("B4").Value = #2/17/2026#  
End Sub  

参考無料動画

書式設定の活用方法、書式設定が原因で起こりうる問題とその対処法

エクセルマクロ導入編(自動記録のやり方について扱っています)

公開日時: 2022/08/22 12:00