• ベストアンサー

now関数のセルから別セルに直前の日付を残す方法

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と 表示させたい。 良い方法はあるでしょうか?

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

マクロを組まないと無理。手動でやるなら簡単ですが。 例えばWorkbookのイベントに下記のようなコードを書いとく。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Worksheets(1).Range("A2") = Worksheets(1).Range("A1").Text End Sub

amamao
質問者

補足

解答ありがとうございます。 >マクロを組まないと無理。 そうですか・・ ちなみに Workbookのイベント・・とは、どこのことをさすのでしょう?

その他の回答 (4)

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

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

amamao
質問者

お礼

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

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

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

amamao
質問者

お礼

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

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

ご質問の内容に問題点があります。 >A1せるにnow関数で、ファイルの開いた日付と時刻を表示させています。 *now関数での表示は再計算毎に数値が変わるため、開いた時刻ではなく何かの操作を最終的に行った時刻になってしまいます。 ・次回ブックを開いた時にA2セルに今回開いた時刻を表示させるためには、ブックを閉じる時点で、A2セルの内容を書き換える処理を行う必要があるためコピー・張り付けを行うが、上記説明にあるようにその時の時刻は開いた時間ではなく作業終了時の時間になってしまいます。 作業終了時の時刻保存でよければ、 A1セルの内容をA2セルに形式を選択して貼り付けの【値】を選択して貼り付け→上書き保存、ブックを閉じる。 を実行するか、マクロ化すればよいと思います。 開いた時刻を記録したい場合は、A3セルなどの作業領域としてブックを開いた時点でA1セルの内容を【値】でコピーし、作業終了時にA3セル内容をA2セルへコピーする必要があると思います。

amamao
質問者

お礼

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

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.2

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

amamao
質問者

お礼

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

関連するQ&A