• ベストアンサー
  • 困ってます

【エクセル】行の最終更新日を、あるセルに自動で入力させる方法。

  • 質問No.2827109
  • 閲覧数15789
  • ありがとう数7
  • 気になる数1
  • 回答数2
  • コメント数0

お礼率 66% (75/113)

エクセルの表で、ある行のデータを更新した時、
その行の最末尾に作っておいた項目名「最終更新日」というセルのデータに
自動的に更新日時が入力されるようにするにはどのようにすればよいでしょうか?

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 55% (658/1196)

No.1です。

すみません、縦横を間違えていましたか。これは失礼しました。
書き換える所はいっぱいあるので、とりあえずマクロを以下のものに置きかえていただけますか?(データの入力範囲の箇所だけ修正してください)

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim MyRng As Range, R As Range, L As Range
 Dim LastUpdated As Integer
 Set MyRng = Intersect(Target, Range("B2:D6"))
 If MyRng Is Nothing Then Exit Sub
 
 Set L = Rows(1).Find("最終更新日")
 If L Is Nothing Then Exit Sub
 LastUpdated = L.Column
 
 For Each R In MyRng.Rows
  Cells(R.Row, LastUpdated) = Now
 Next
End Sub
お礼コメント
minaru

お礼率 66% (75/113)

できました!

ご親切に二度もお答えくださってありがとうございました。
大変に分かりやすかったです。
本当にありがとうございました。
投稿日時:2007/03/12 22:01

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 55% (658/1196)

A列に項目名が入っており、「最終更新日」という項目名が書いてあるとします。

シートタブを右クリックし、「コードの表示」を選択するとVBAの画面が出るので、右の画面に以下のマクロをコピーして貼り付けてください。その際、3行目の"B2:D6"は実際にデータが入るセル範囲に書き換えてください。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim MyRng As Range, R As Range, L As Range
 Dim LastUpdated As Integer
 Set MyRng = Intersect(Target, Range("B2:D6"))
 If MyRng Is Nothing Then Exit Sub
 
 Set L = Columns("A").Find("最終更新日")
 If L Is Nothing Then Exit Sub
 LastUpdated = L.Row
 
 For Each R In MyRng.Columns
  Cells(LastUpdated, R.Column) = Now
 Next
End Sub

Alt+F11でExcelの画面に戻り、セルに入力をすると最終更新日が自動的に更新されます。
最終更新日の行はあらかじめ日付と時刻に書式設定しておいてください。
補足コメント
minaru

お礼率 66% (75/113)

できました!
ありがとうございます。

差し支えなければ教えていただきたいのですが、
「A列に項目名が入っている表」ではなく「1行目に項目名が入っている表」だった場合は
どこを書き換えればよいのでしょうか?
投稿日時:2007/03/12 21:13
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ