[[20060223141222]] 『保存した日付と時間をワークシート上に表示』(Anne) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『保存した日付と時間をワークシート上に表示』(Anne)

エクセルで業務の進捗管理表を作成しています。
ある項目の状況が変わると、変わった個所を書き換えて、表の右上に書き換えた日時と時間を入力して保存するようにしています。この書き換えた日付と時間が(=最終保存した時点の日付とできれば時間も)を自動的に更新させる方法はないでしょうか?
Excel2000、Windows2000です。

よろしくお願いします。


 例です。あとで、もう少しご説明します(あきお)
 '監視範囲:C列 E列
 '更新日時:G1
 Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column
    Case 3, 5
        Cells(1, 7) = Now
    End Select
 End Sub


 忘れ物があるようです。
 Application.EnableEvents = False
 Application.EnableEvents = True

 おお、忘れ物というより、知らなかったです。
 またひとつ、新知識を得ました〜♪ ありがとうございます。

 さて、シート内でセルの値に変更(イベント)があったときに、
 自動的に呼ばれるお約束のコードとして、エクセルには
 Worksheet_Change()という名前が用意されています。
 下記は、Worksheet_SelectionChange() についてなのですが、
 使用方法が掲載されています。ご参考にどうぞ。
 エクセル・マイスター(20040727)
https://www.excel.studio-kazu.jp/mag2/backnumber/mm20040727.txt
 忘れ物を付けてみます。
 Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column '☆1
    Case 3, 5 'C列 または E列 ならば、下を処理
       Application.EnableEvents = False '忘れ物1
       Cells(1, 7) = Now '☆2
       Application.EnableEvents = True '忘れ物2
    End Select
 End Sub
 '基本的に最初の時のコードは、セルの値が変わると、とにかく呼ばれます。
 '☆1 で、変更されたセルの列を判定し、
 '☆2 で、現在日時を G1 セルへセットします。
 '        このとき、「はっ!」とエクセルが気づき、
 '        「セルの値が変わったから仕方ないジャン」と
 '        また、Worksheet_Change()が呼ばれます(自分で自分を呼んでる)
 '        で、G1 セルは、☆1の条件を満たさないので、おしまい。
 '        そのあと、☆2 の次に戻り、ほんとにおしまい。となります。
 '          Worksheet_Change(親) 開始
 '            +---> Worksheet_Change(子) 開始
 '            +---> Worksheet_Change(子) 終了
 '          Worksheet_Change(親) 終了  上から時系列に、こんな感じです。
 '
 '忘れ物1 をつけると、エクセルは、イベントを気にしなくなり、☆2 のときに
 'Worksheet_Change() は呼ばれません。忘れ物2 は、その逆(気にする)です。
 '常に、こういう感じになるはずです。
 '          Worksheet_Change(親) 開始
 '          Worksheet_Change(親) 終了
 '(あきお)# Anne って、いい名前だ・・・ 

 なさりたいことはこっちのような気がします。
 -----------------------------------------------------------------------------
 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Range("A1").Formula = Now
 Range("A1").NumberFormat = "yyyy/mm/dd hh:mm:ss"
 End Sub
 ----------------------------------------------------------------------------
 A1を表の右上のセルに変えてください。
                              (kym)

 Workbook_BeforeSave() も悪くないけど、
 セルの値が変わったかどうかの判定が微妙でしょうか。
 でも、「最終保存した時点の日付とできれば時間」なら
 Workbook_BeforeSave() じゃないとダメですね
 1.セルを書き換えると、表の右上の日時のセルの色が変わる
 2.保存するときに、表の右上の日時のセルの色が変わっていれば、
   表の右上の日時のセルへ、現在日時をセット
 なんて、いかがでしょう (あきお)

あきおさん、kymさん、
丁寧なご回答ありがとうございます。

実は昨日、質問を投稿した後、考えていて、「内容を更新していなくても、たいてい保存を押して終了してしまっている」ことに気が付いて、あれ?最終保存の日時じゃまずいのかなと考えていたところでした。
上記であきおさんが、セルの値が変わったかどうかの判定・・と言われている点です。
上記の方法で解決できますね。この方法で試してみますね。
またわからない点があれば、ご質問します。よろしくお願い致します。
お二人とも、どうもありがとうございました。(Anne)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.