はじめてのイベントマクロ 〜 日付入力を簡単に

セルに「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 のモジュールの場合、モジュールそのものは削除できないので、中のコードをすべて削除します。(標準モジュールやユーザーフォームは、[ファイル]メニューから解放(削除)ができます) マクロはワークシートと一緒にブックファイルに保存されるので、削除せずにファイルを保存しておけば、次にファイルを開いたときにまた使うことができます。


戻る