セルに「141101」と入力したら、自動的に「平成14年11月1日」となるようなマクロを作ってみましょう。
まず、日付を入力したいシートの「シートモジュール」を表示します。シートモジュールは、各シートごとのマクロを書くための場所です。シート見出しを右クリックして[コードの表示]を実行します。
Visual Basic Editor が起動して、そのシートのモジュールが表示されます。このようなマクロを書く場所のことを「モジュール」と言います。モジュールにはシートモジュールの他にも「標準モジュール」「クラスモジュール」などがあります。
また、このエディタを「Visual Basic Editor」と言います。
モジュールに以下のコードをコピー貼り付けします。
Private Sub Worksheet_Change(ByVal Target As Range) Dim s As String If Target.Cells.Count = 1 Then s = Target.FormulaLocal If s Like "######" Or s Like "#####" Then On Error Resume Next Application.EnableEvents = False Target.Value = CDate(Format(s, """H""@@/@@/@@")) If Err = 0 Then Target.NumberFormatLocal = "ggge年m月d日" Else Target.NumberFormatLocal = "G/標準" End If Application.EnableEvents = True On Error GoTo 0 End If End If End Sub
これで準備完了です。
エクセルのウィンドウに戻って、セルに「141101」などと入力してみてください。
入力が終わり、マクロが不要になったら、またモジュールを表示して、コードをクリアします。
※ シートや ThisWorkbook のモジュールの場合、モジュールそのものは削除できないので、中のコードをすべて削除します。(標準モジュールやユーザーフォームは、[ファイル]メニューから解放(削除)ができます) マクロはワークシートと一緒にブックファイルに保存されるので、削除せずにファイルを保存しておけば、次にファイルを開いたときにまた使うことができます。