プロが教えるわが家の防犯対策術!

A1せるにnow関数で、ファイルの開いた日付と時刻を表示させています。

A2せるに、常に直前にファイルを開いた日付と時刻を
       ^^^^
残しておきたいんです。

たとえば、
2006/1/1 02:10にファイルを開いたら
A1せるには、now関数で2006/1/1 02:10と表示されます。

ファイルを閉じ、次回ファイルを開いた日付が、
2006/1/3 12:30の場合にA1せるはnow関数で2003/1/3 12:30
と表示されます。
この時に、A2せるには、直前の2006/1/1 02:10と表示させたい。

さらにファイルを閉じ、次回ファイルを開いた日付が、
2006/2/1 05:20の場合にA1せるはnow関数で2006/2/1 05:20
と表示されます。
この時に、A2せるには、直前に開いた時刻の2006/1/3 12:30と
表示させたい。

良い方法はあるでしょうか?

A 回答 (5件)

マクロを組まないと無理。

手動でやるなら簡単ですが。

例えばWorkbookのイベントに下記のようなコードを書いとく。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(1).Range("A2") = Worksheets(1).Range("A1").Text
End Sub

この回答への補足

解答ありがとうございます。

>マクロを組まないと無理。
そうですか・・

ちなみに
Workbookのイベント・・とは、どこのことをさすのでしょう?

補足日時:2006/12/26 04:12
    • good
    • 0

これは関数の世界では無理です。


>>マクロを組まないと無理。
そうですか・
いつまでもこれでは困ります。
関数は他のセルの値を加工して、値を返すものです。
実行後は自分の式を消してしまう、そんな関数はありません。
ですからいつまでたっても、元が変わったら、変わったら換わった時点の、現状の日付けを用いて演算し表示してしまいます。
一方
VBAはセルに値を記録するのですが、データを設定するセルを条件でづらしたり、
条件に該当する場合、設定しないとかできますので、その点自由が利きます。
ーー
データ設定(日付設定)操作を利用者が行うか、
VBAを勉強するよりないでしょう。
    • good
    • 0
この回答へのお礼

なるほど。
勉強になりました。
VBAも勉強しないといけませんね。
とりあえず今の問題を試行錯誤してみます。
どうもありがとうございました。

お礼日時:2006/12/27 11:05

Now()関数を使うのでなくて、ワークシートオープン時のイベントで、


A1に開いた時刻をセットすればいいのではないでしょうか。

Alt+F11でVBAの画面を開き、左側のThisWorkBookをダブルクリックして、以下のマクロを貼り付けてみてください。

Private Sub Workbook_Open()
  With Worksheets(1)
    .Range("A2").Value = .Range("A1").Value
    .Range("A1").Value = Date + Time
  End With
End Sub
    • good
    • 0
この回答へのお礼

この方法でもできますね!
どうもありがとうございました。

お礼日時:2006/12/27 11:31

ご質問の内容に問題点があります。


>A1せるにnow関数で、ファイルの開いた日付と時刻を表示させています。

*now関数での表示は再計算毎に数値が変わるため、開いた時刻ではなく何かの操作を最終的に行った時刻になってしまいます。

・次回ブックを開いた時にA2セルに今回開いた時刻を表示させるためには、ブックを閉じる時点で、A2セルの内容を書き換える処理を行う必要があるためコピー・張り付けを行うが、上記説明にあるようにその時の時刻は開いた時間ではなく作業終了時の時間になってしまいます。

作業終了時の時刻保存でよければ、
A1セルの内容をA2セルに形式を選択して貼り付けの【値】を選択して貼り付け→上書き保存、ブックを閉じる。
を実行するか、マクロ化すればよいと思います。

開いた時刻を記録したい場合は、A3セルなどの作業領域としてブックを開いた時点でA1セルの内容を【値】でコピーし、作業終了時にA3セル内容をA2セルへコピーする必要があると思います。
    • good
    • 0
この回答へのお礼

>作業終了時の時刻保存でよければ、
時刻保存でよいのです。

現在、形式を選択で処理していますので、
これを、自動で何とかならないかと思ったのですが
マクロ化しかないようですね。
どうもありがとうございました。

お礼日時:2006/12/27 10:56

はじめまして


横から失礼いたします。

目的のファイルをExcelで開きます。
ツール→マクロ→VisualBasicEditorを開く。
左上の窓の「VBAProject(開いたファイルの名前)」が展開されていなかったら、それをダブルクリック。
「MicrosoftExcelObject」をダブルクリック。
「ThisWorkbook」をダブルクリック。
右側に開いた窓に、1番さんのマクロをコピーして貼り付け。
あとは閉じる。

これでいけると思います。

的外れでしたらごめんなさい。
    • good
    • 0
この回答へのお礼

なんとかできました。
どうもありがとうございました。

お礼日時:2006/12/27 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!