• ベストアンサー

エクセル:編集したセルの編集日を自動で記録

指定されたセルを編集した時に編集した日を別のセルに記録したいです。 イメージは下記です。 A1に変更があった場合はd1に編集日を記載 B1に変更があった場合はe1に編集日を記載 C3に変更があった場合はf3に編集日を記載 という感じで、たくさんのセルの各編集日が分かるようにしたいです。 よろしくお願い致します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です。 >このVBAですとA以外の位置例えばdから始めたい場合はどうすればよいのでしょうか? >出来れば指定したセルを指定したセルに日時を記録させたいです。 とありましたので・・・ 質問では指定したセルが編集セルの3列右側だったので前回のようなコードにしましたが、 指定セル(日付表示セル)がはっきり決まっているのであればセル番地を指定すればよいので、簡単にできると思います。 追加質問ではD列以降となっていますので、 仮にD列~F列の3列に変更があった場合、その3列右側のセルに表示させるコードは↓のようになります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column >= 4 And Target.Column <= 6 Then With Target.Offset(, 3) .Value = Now() .NumberFormatLocal = "yyyy/m/d" End With End If End Sub 尚、コード内の If Target.Column >= 4 And Target.Column <= 6 Then End If の2行を削除した場合はエンドレスに最終列まで繰り返されますので、今回も3列限定としてみました。 セル配置が判ればもっと具体的なコードにできるとおもいますよ。m(__)m

inko_027
質問者

お礼

お礼が遅くなり申し訳ありません。 教えていただいた方法でとりあえず解決しました。 また何かありましたらよろしくお願いいたします。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

多分質問者は初心者なのだろうが、こんなことをやろうと思わないほうが良い。手動で何とかならないか考えるべきだ。 (1)また関数では出来ない問題です。 VBAのコード作成経験、イベントのコード作成経験などありますか? イベントは、いつもその事象が起こると常に働いてしまい、初めまでの停止、中間での停止、再開、その後はそうしたくない場合などの制御、また訂正が難しい。 だからi一般的に言って、使える場面は限られると思う。 少なくても制御ボタンなどを別に設けて、2段制御にすべきかもしれない。 ーー (2)d1、E1、F3とA1,B1,、C3との関連はどうなのか、何か書くべき。これがプログラマのまずの関心事で、書いてないのはコンピュター的な経験が無い証拠。 同行で2列右列と言うことか。 日付を入れるのは一定列では都合が悪いのか? 変更したら人間がG列(例)をクリックして当日日付を(VBAで)セットなどに留めるべきだと思う。 変更列はC列までしかないのか。行の制限は無いのか? ーーー (3)質問のことが実現したとして、これはどういう場合に、どう(主に事後)利用するのか。 質問するならこういうことも書いておくべきだ。 (4)少なければセルでCTRL+;(日付入力)で賄えないのか?この方法さえ知らないのでは? ==== そもそもエクセルの「変更履歴」の機能を知っていて質問しているのか。そうでないなら Googleで「Excel 変更履歴」で照会して、勉強してから本件を考えては。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

書き込むセルにこだわらないのであれば共有ブックの設定をしてください。 http://www.atmarkit.co.jp/fwin2k/win2ktips/410excelshare/excelshare.html

inko_027
質問者

お礼

お返事ありがとうございます。 VBAなどで出来なかった場合、こちらの共有も検討したいと思います。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! VBAになってしまいますが・・・ 一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてみてください。 (A~C列が変化したときのみとしています) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column < 4 Then With Target.Offset(, 3) .Value = Now() .NumberFormatLocal = "yyyy/m/d" '←セルの表示形式は好みで変更してください。 End With End If End Sub こんな感じではどうでしょうか?m(__)m

inko_027
質問者

お礼

お返事ありがとうございます。 このVBAですとA以外の位置例えばdから始めたい場合はどうすればよいのでしょうか? 出来れば指定したセルを指定したセルに日時を記録させたいです。

関連するQ&A

専門家に質問してみよう