LoginSignup
0
0

More than 3 years have passed since last update.

Excelで必ず使う VBA 選択したセルに令和元年の表示形式を設定するマクロ

Posted at

レジストリの設定によらず、2019年5月1日以降を令和元年5月1日にするマクロ

Sub InsertNumberFormatToActiveRange()
'For Excel 2013 Later
' When Japanese Era Reiwa has been already written "
' Select Range whitch You want to set Numberformat(Local), and run this VBA Macro
' 平成30年12月05日、令和元年05月01日、令和02年01月01日のように元年をレジストリの設定によらず元年表記にします。
' なぜか令和2年にする人が多いですが、10年になるとソートができないので02年表記を推奨します。どうしてもしたくない場合はeeではなく、eにしてください。mm、ddも同様に01のように表示したくない場合はm、dにしてください。ただしソートがうまくいかなくなります。
Dim Rng As Range, R As Range
Set Rng = Selection
For Each R In Rng
Debug.Print R.Value, R.Formula, R.NumberFormatLocal, R.NumberFormat
Selection.NumberFormatLocal = ""
Selection.NumberFormatLocal = _
"[<43586]gggee""""mm""""dd"""";[<43831]""令和元年""mm""""dd"""";gggee""""mm""""dd"""""
Next
End Sub 

レジストリの設定によらず2019年5月1日以降をR元.5.1にするマクロ

どうしてもR表記をしたいという信じがたいことをする人間が多いので、しかたなく作りました。

Sub InsertNumberFormatToActiveRangePeriod()
'For Excel 2013 Later
' When Japanese Era Reiwa has been already written "
' Select Range whitch You want to set Numberformat(Local), and run this VBA Macro
' H30.12.05、R元.5.1、R2年1月1日のように元年をレジストリの設定によらず元年表記にします。区切りは半角のピリオドです。
' なぜかR2にする人が多いですが、10年になると文字列の場合ソートができず、並ばないので02年表記を推奨します。しかしそれは上でやっているので、1桁は1桁表示、0埋めなしにします。
Dim Rng As Range, R As Range
Set Rng = Selection
For Each R In Rng
Debug.Print R.Value, R.Formula, R.NumberFormatLocal, R.NumberFormat
Selection.NumberFormatLocal = ""
Selection.NumberFormatLocal = _
"[<43586]ge"".""m"".""d"""";[<43831]""R元.""m"".""d"""";ge"".""m"".""d"""""
Next
End Sub

元号対応はいろいろある

https://www.waenavi.com/entry/20190401/1554087637
ただし

(2)日付が令和にならないのはユーザの責任です!
日本時間の2019年5月15日(水)に「累積的な更新プログラム」として配信され、令和に対応するプログラムが自動的に更新されるようになりました(再起動が2回必要)。
したがって、現時点でExcelで「令和」が表示されないのであれば、それはマイクロソフトの責任ではありません。パソコンのユーザ側に100%の責任があります。和暦を使わないのであればそのまま放置しても全く問題はありませんが、業務で和暦を使うのであればユーザの責任で各自対応する必要があります。

必ず使うシリーズは

これはExcelの場合、Addinに登録することを想定しています。するとマクロを組まなくても使えるからです。

ユーザーに責任があるというのは誤りです

  1. 元号を決めたのはユーザーではなく政府です
  2. むりやり元年を使えという口先だけ都合がいいときだけグローバルや法治主義をもちだすバカな政府が原因です
  3. もちろんそれになにもしない国民はバカすぎてはなしになりません。
  4. しかしURLをみたらわかるとおり、元号対応は一意ではきまりません。8つ以上の対応、中にはレジストリの確認も含まれます。このような「対応」をユーザーに求めるのは不可能です。レジストリに設定したからMSに責任はないなどとは失笑ものです。MSがいつ「責任」をとったことがあるのでしょうか。やるのはサポートだけです。マイクロソフトが責任を取らないのに、ユーザーに責任があるなどとはどこに根拠があるのでしょうか。法律的にちゃんと説明してください。道義的にもあり得ないですよ。結局責任というものを理解していない。利益は取るけど、責任は負わない。これがIT業界に蔓延して腐敗しきっているという根拠です。
  5. むろんIT業界として言いたいことはわかります。「元号なんて使うな」これは正しいです。ありとあらゆる意味でソートする方法がないため、信用ができない。非常にリスクが高く、ばかげておろかな行為です。ウィルスをしかけているのと一緒くらいなレベルだと理解しています。どういう方法をとっても令和は平成ほどうまく変換できない。5月1日で平成と令和の混在期間が長すぎるなど、背景はたくさんあります。それはわかるのですが、ユーザーのせいじゃないじゃないですか。元号に対応できるといった人たちが悪いんですよ。できないならできないって言わずに、ユーザーを罵倒する。それじゃ、ユーザーからブチ切れられることになる。決まっているじゃないですか。
  6. もちろん一般的にも相手方に渡す書類や、Accessで言えばレポートに表示させるとき以外は使っていないと思いますが。それを強制する政府や追従する産経新聞などは、国民にいかにITを使わせたくないか、生産性を向上させたくないか、構造改革なんてやりたくないかということがわかるわけです。しかも政府のバカもマスコミもほんとうは元号なんて馬鹿にしている。単純に相手を恫喝する手段にしか思っていない。
  7. なのでユーザーに責任がありますというのは高速道路で人をぶん殴っている奴が「おれは悪くない、相手が車をぶつけてきたらかだ」というのとあまり変わらない。大体あのぶん殴っている人って非常に今の平均的な日本人そのものです。他責性がつよく、人に責任を押し付けて罵倒するスタイル。こういう「ユーザーに責任がある」というのは高速道路でぶん殴っているのとあまり変わらない行為です。それが分からない日本人が多いけどね。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0