和暦を西暦に変換して日付入力などをエクセルで行う事があると思いますが、その時にエクセル関数をセルに入力しておくことが一般的だと思います。
もし可能であればユーザーフォーム上で和暦入力して、コマンドボタンを押すと西暦が表示させたいと思ったことはありませんか?
もちろん完璧なものではなくても、今後の応用させて使う為にできるようになると便利ですよね。
エクセル関数とオプションボタンを組み合わせる
全てをマクロ上で行おうとすると、そうとな知識が必要だと思いますが、エクセル関数とVBAを組み合わせてみるととても簡単にできてしまいます。
本来ならば体裁を考えてセルを使っていくのですが、今回はユーザーフォームに表示させるだけなので、体裁は無視します。
ワークシートの準備
まず始めにエクセルワークシート上に和暦と西暦の表を作ります。
薄い青色のセル(A2とB2)はユーザーフォームから転記されるデータで、薄い緑色にはエクセル関数が入っています。
セルA4から下に和暦を入力していきます。アナログですが、昭和元年~令和82年(西暦2100年)まで入力してあります。

セルB4から下に西暦を入力していきます。1926年から2100年まで入力していますが、和暦が変わった年(昭和64年・平成元年)と(平成31年・令和元年)はそれぞれ西暦が入力されています。

次にセルC2とC4にエクセル関数を入れておきます。
セルC2には、ユーザーフォームから転記された元号(セルA2)と年(セルB2)を結合させる数式をいれるので、このようになります。
=A2&B2&B1
A2は和暦、B2は年数、B1は年を&で値を順番にくっ付けただけなのですが、もちろんVBAでやることも可能ですが、ここでは省略します。
C4は結合された「平成5年」をA5からB181の中から探して表示するVLOOKUP関数を使って表示させていますが、この説明もここでは省略します。
これで、ワークシート上での作業は終了です。
次にユーザーフォームを作りましょう。
エクセルVBAの準備
ユーザーフォームは自分自身で自由にパーツを配置して作ることができるのでとても便利ですよね。
ここでは、オプションボタンで元号を選択して、テキストボックスに年数を入力してから、コマンドボタンを押して西暦をラベルに表示させるという方法をとります。
例えば平成5年の西暦を知りたければ、「平成」にチェックして「5」テキストボックスに入力して「変換」ボタンを押せば、「西暦」と書いてあるラベルが「1993」と表示が変わります。

では、そのようになるようにコマンドボタンにVBAコードを書きこみましょう。
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Range(“A2”).Value = “昭和”
ElseIf OptionButton2.Value = True Then
Range(“A2”).Value = “平成”
ElseIf OptionButton3.Value = True Then
Range(“A2”).Value = “令和”
ElseIf OptionButton4.Value = True Then
Range(“A2”).Value = “予備”
End If
Range(“B2”).Value = TextBox1.Text
UserForm1.Label4.Caption = Range(“C4”).Value
End Sub
- コマンドボタン1をクリックしたら
- もしオプションボタン1を選択したら
- セルA2に「昭和」と転記する
- そうではなくオプションボタン2が選択されたら
- セルA2に「平成」と転記する
- そうではなくオプションボタン3が選択されたら
- セルA2に「令和」と転記する
- そうではなくオプションボタン4が選択されたら
- セルA2に「予備」と転記する
- IFステートメント終了
- セルB2の値はテキストボックス1の値を記載する
- ユーザーフォーム1のラベル4の表示文字はセルC4の値を記載する
- マクロ記述終了
これで完成です。難しくないでしょ。