• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでデータ入力された日付と時間を自動入力する)

エクセルでデータ入力された日付と時間を自動入力する方法

このQ&Aのポイント
  • エクセルで1行目に入力したデータに応じて2行目に日付と時間を自動入力する方法について教えてください。
  • VBAを使用して、エクセルで1行目に入力したデータに応じて指定されたセルに日付と時間を自動入力する方法について詳しく教えてください。
  • エクセルのVBAを活用して、1行目にデータを入力すると、指定したセルに日付と時間を自動入力する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

F13~P13を変更したらでしたら Private Sub Worksheet_Change(ByVal Target As Excel.Range) Application.EnableEvents = False If Not Intersect(Target, Range("F13:P13")) Is Nothing Then Target.Offset(1, 0).Value = Format(Now, "yyyy/mm/dd"" ""hh:mm:ss") End If Application.EnableEvents = True End Sub になりますが、削除しても日付が変更されてしまいます。 削除した場合日付を変更しないのでしたら (複数一度に削除した場合の事を考えたらFor Each~Nextはあった方が良かったです) Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r As Range Application.EnableEvents = False For Each r In Target If Not Intersect(r, Range("F13:P13")) Is Nothing And r.Value <> "" Then r.Offset(1, 0).Value = Format(Now, "yyyy/mm/dd"" ""hh:mm:ss") End If Next r Application.EnableEvents = True End Sub

simizuchi
質問者

お礼

ありがとうございます。 勉強になります。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

No.1の追加です。 入力するセルのデータを削除した時に日付も削除したい場合です。 (念のために日付を削除するかどうか確認します) 「r」一文字だと見落としそうなので「mRng」に変更しています。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim mRng As Range Application.EnableEvents = False For Each mRng In Target If Not Intersect(mRng, Range("F13:P13")) Is Nothing Then If mRng.Value = "" Then If MsgBox("日付も削除しますか?", vbYesNo + vbDefaultButton2) = vbYes Then mRng.Offset(1, 0).Value = "" End If Else mRng.Offset(1, 0).Value = Format(Now, "yyyy/mm/dd"" ""hh:mm:ss") End If End If Next mRng Application.EnableEvents = True End Sub

simizuchi
質問者

お礼

ありがとうございました。 すごく助かりました。