さて、今回は、
マクロを使った日付の自動入力
についてです。
日付の自動入力と言っても、さまざまな導線(動き)が想定されますので、ここでは、
当該セルに日付を入力すれば、自動的にその直下のセルに同じ日付が入る
を例にご説明します。
条件:
・A列が日付の列である
・行3から100が日付を入力する可能性のあるセルである
VBAコード:
以下のVBAコードはWorksheet_Changeイベントを使って、ユーザーが当該シートのA列(A3:A100の範囲)に値を入力するたびに、直下のセルに同じ値を自動的にコピーします。Application.EnableEvents = Falseはイベントトリガーによる無限ループを防ぐために使用されています。
Private Sub Worksheet_Change(ByVal Target As Range)
‘ A列(日付列)に変更があった場合のみ処理を実行
If Not Intersect(Target, Me.Range(“A3:A100”)) Is Nothing Then
Application.EnableEvents = False ‘ イベントを一時停止して、無限ループを避ける
On Error GoTo CleanUp ‘ エラー処理へ
Dim Cell As Range
For Each Cell In Intersect(Target, Me.Range(“A3:A100”))
‘ 直下のセルに同じ日付を設定
Cell.Offset(1, 0).Value = Cell.Value
Next Cell
CleanUp:
Application.EnableEvents = True ‘ イベントを再開
End If
End Sub
挿入する箇所:
このVBAコードは該当するシート(たとえばSheet1など)のシート固有のイベントとして挿入する必要があります。以下の手順に従って挿入してください:
Excelで対象のワークブックを開きます。
Sheet1のシートを右クリックし、「コードを表示」を選択して、VBAエディターを開きます。
開いたウィンドウに直接先ほどのVBAコードを貼り付けます。
この操作により、Worksheet_ChangeイベントプロシージャがSheet1のVBAコードセクションに追加され、指定された範囲内のA列にデータが入力されると自動的に直下のセルに同じ日付が入力されるようになります。
このコードは、シートレベルのイベントとして動作するため、他のモジュールにコードを挿入するのではなく、Sheet1のイベントプロシージャとして追加することが重要です。これにより、Sheet1内でのみこの自動入力機能が動作します。
すでにWorksheet_Changeイベントがある場合:
Sheet1のコードウィンドウに既にWorksheet_Changeイベントが存在する場合は、上記のコードを新たに追加しても、反応しません。Worksheet_Changeイベントを重複して用いることができないからです。
そのため、既存のWorksheet_Changeイベントに上記のコードを統合する必要があります。この場合、上記のコードをそのまま追加しても反応しませんので、適宜修正が必要になります。
(既存のWorksheet_Changeイベントによって修正の仕方は異なります)
「自分では対応が難しい・・・」
「作ってほしい」
とお感じの方は下記よりご連絡くださいませ。
丁寧にご対応させていただきます。