ここから本文です

Excel2007のマクロを、セルに入力があれば自動実行する方法についてお教えください...

ito********さん

2011/12/317:12:38

Excel2007のマクロを、セルに入力があれば自動実行する方法についてお教えください。

セルに項目が入力されたときに、その入力した時刻を表示したいのですが、
now関数を用いると、次の行に入力されたときに時間が更新されてしまいます。

調べた限り、それを回避するには「コピー→形式を値で貼り付け」しかないのですが、
マクロを組んでそれを任意のタイミングで自動実行したいのです。

「Excel起動時」「何分おき」ではなく、
たとえば「A1に何か入力があった」時に、その入力の時刻を残し、
さらに「A2」に入力を入れたときに、先ほどA1の入力時刻を更新することなくA2の入力時刻を表示し…
を繰り返すようなマクロは作れるのでしょうか?


…という質問を先日して、どなたかに回答を頂いたようなのですが、
業務多忙のため回答チェックできずに一週間を超えてしまいました。

痛恨の極みですが、改めてご教授いただければ幸いです。

補足dreamvcat origin 様
ご丁寧に回答ありがとうございます。

これを標準モジュールに貼り付ければいいのでしょうか?
起動できませんがどのようにしたら実行できますか?
ど素人の質問で申し訳ありません。宜しくお願い致します。

閲覧数:
2,606
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

har********さん

2011/12/320:37:58

A1:A20に

何らかの数字を入力すると、入力された数字の右の列にその時間をTimeで表示します。
EventMacroです。
ファイルを名前を付けて一旦保存してから使ってください。でないとエラーが出ます。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
With Target
If IsNumeric(.Value) Then
.Offset(, 1) = Time
End If
End With
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
End Sub

A1:A20に

何らかの数字を入力すると、入力された数字の右の列にその時間をTimeで表示します。...

質問した人からのコメント

2011/12/10 00:51:32

早いほうを選択しました。ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

dre********さん

2011/12/317:28:58

これで大丈夫かなと思います。
入力したいセルの右のセルに時刻が無ければその時の時刻を表示していきます。

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If Target.Column = 1 Then
If Target.Offset(0, 1).Value = "" Then
Target.Offset(0, 1).Value = Time
End If
End If
End With
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる