📊 Excel VBA Top100
⚡

TimestampCells

自動化

選択範囲のセルに現在の日時をタイムスタンプとして入力します

指定したセルまたは隣接するセルに現在の日時を自動入力するマクロです。データ入力日時の記録・ファイル更新履歴の管理・処理完了日時のスタンプなど、タイムスタンプ管理が必要な業務に活用できます。日時の形式(日付のみ・日時・時刻のみ)はマクロで設定でき、セルの変更をトリガーにして自動的に日時を記録する使い方もできます。変更履歴の透明性確保に役立ちます。内部ではWorksheet_Changeイベントを利用してセルの変更を検知し、隣接セルにNow()の値をタイムスタンプとして書き込んでいます。BulkDataEntryで作成した入力フォームと組み合わせれば、登録日時の記録漏れなく履歴管理が行える仕組みが完成します。手動での日時記入は入力忘れや記入ミスが起きがちですが、イベント駆動で自動化することでその心配がなくなります。

TimestampCells デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 対象セル範囲を選択してから TimestampCells を実行します

🎯 活用シーン

  • ✓データ入力シートに入力完了日時を自動記録して、いつ誰がデータを更新したかの履歴を管理したいとき
  • ✓処理ログシートに各処理の実行日時を自動スタンプして、バッチ処理の実行履歴を正確に記録したいとき
  • ✓在庫更新や受注処理の完了時刻を自動記録して、業務処理のタイムトラッキングを正確に行いたいとき
  • ✓承認ワークフローで各承認ステップの完了日時を自動記録し、処理の遅延箇所を可視化したいとき
  • ✓品質検査記録に検査完了時刻を自動スタンプし、後から検査タイミングの妥当性を検証できるようにしたいとき

💡 実装のヒント

  • ▸Now()関数を使うと現在日時が得られますが、値として貼り付けないと再計算のたびに更新されてしまいます。タイムスタンプとして残したい場合は必ず値として入力してください。
  • ▸セルの変更時に自動でタイムスタンプを記録したい場合はWorksheet_Changeイベントプロシージャに組み込んでください。
  • ▸タイムスタンプのフォーマットは Format関数で任意に設定できます。「yyyy/mm/dd hh:mm:ss」形式にすると秒単位の記録が可能です。
  • ▸特定の列のみを監視対象にしたい場合は、Target.Columnで変更されたセルの列番号を判定する条件を追加してください。
  • ▸一度記録したタイムスタンプを上書きされたくない場合は、既に値が入っているセルをスキップする判定を加えると安全です。

💻 VBAコード

' TimestampCells
' -----------------
' Macro Name: TimestampCells
' Description: 選択範囲のセルに現在の日時をタイムスタンプとして入力します
' Parameters: なし
' Returns: なし
' Usage: 対象セル範囲を選択してから TimestampCells を実行します
' -----------------

Sub TimestampCells()
    On Error GoTo ErrorHandler

    Dim rng As Range
    Dim cell As Range
    Dim now As Date

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection
    now = Now

    For Each cell In rng
        cell.Value = now
        cell.NumberFormat = "yyyy/mm/dd hh:mm:ss"
    Next cell

    MsgBox "タイムスタンプを入力しました: " & Format(now, "yyyy/mm/dd hh:mm:ss"), vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub