こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

指定されたセルを編集した時に編集した日を別のセルに記録したいです。

イメージは下記です。
A1に変更があった場合はd1に編集日を記載
B1に変更があった場合はe1に編集日を記載
C3に変更があった場合はf3に編集日を記載

という感じで、たくさんのセルの各編集日が分かるようにしたいです。

よろしくお願い致します。

投稿日時 - 2011-03-24 22:50:45

QNo.6618292

困ってます

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

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

投稿日時 - 2011-03-25 09:00:58

お礼

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

また何かありましたらよろしくお願いいたします。

投稿日時 - 2011-04-10 14:08:57

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2011-03-25 10:09:25

ANo.2

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

投稿日時 - 2011-03-24 23:18:48

お礼

お返事ありがとうございます。

VBAなどで出来なかった場合、こちらの共有も検討したいと思います。

投稿日時 - 2011-03-25 00:25:40

ANo.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

投稿日時 - 2011-03-24 23:17:28

お礼

お返事ありがとうございます。
このVBAですとA以外の位置例えばdから始めたい場合はどうすればよいのでしょうか?

出来れば指定したセルを指定したセルに日時を記録させたいです。

投稿日時 - 2011-03-25 00:23:59

あなたにオススメの質問