• ベストアンサー

Excelの自動日付挿入

エクセルで見積書を作りました。 見積作成日はもちろん「now()」で作りました。 が、これだと読み込んだ日になってしまうので、後で「これいつ作ったのだっけ」と言うのを参照したいときにわからなくなってしまいますよね。 自動で日付は挿入したいのですけど二度と変えないようにするにはどうしたらいいですか? 製作日をファイルのプロパティーで見ればすむだけなのかもしれませんがお願いします。

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

  • ベストアンサー
  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.7

こんばんは。早速サンプルマクロを組んでみました。下記の様に操作してみて下さい。 ・コマンドボタンを貼り付けたいシートを表示させ、メニュバーを右クリック後表示されたプルダウンメニューからVisualBasicをクリックする。 ・表示されたツールバーの右から2番目(トンカチとスパナのマーク)をクリックし、表示されたコントロールツールボックスの左の列の上から3番目コマンドボタンをクリックして貼り付けたいところにマウスポインターをあわせ、再度クリックする。 ・貼り付けたコマンドボタンの上でダブルクリックするとコードエディターが表示されるので、カーソルが点滅している部分に書きのコードを書き込む。 Worksheets("リスト").Range("A17").value = Activesheet.range("A17").Value Worksheets("見積書").Range("F2").Value = Activesheet.range("A17").Value ペーストしたいシートの枚数分"ペーストしたいシート名"と"ペーストしたいセル番地"を変えて式を書き込む。 ・ALT+F11キーを押して、エクセルの画面にもどり、VisualBasicツールバーの一番右側の△定規のマークをクリックしてデザインモードをOFFにする。 コマンドボタンをクリックするとマクロが走り出し、貴方様の思い通りの動作を体験できるかと思います。

その他の回答 (6)

  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.6

早速補足いただきまして有難うございます。 >どうにかしてマクロを使わないですむ方法は無いのでしょうか… マクロを使わない方法というのであれば、now()で値を表示させた後にその値をコピーし、形式を選択して貼り付けから値を選択してペーストする方法しかない様にに思います。 私が考えた方法も上記の方法をマクロで実行するようにしただけですので、マクロエラーは起こらないと思います。私がマクロを組んで、貴方様はそのコードをコピー&ペーストするだけで実行できるようにすることも可能です。 サンプルマクロをご希望の節は、下記の内容を教えて下さい。 ・コピー元のデータが入力されているシート名とセル番地 ・ペースト先のシート名とセル番地 ・もし、ペースト先がコピー元のブックと死がうブックの場合には、そのブック名 お手数をおかけいたしますが、よろしくお願いいたします。

master-3rd
質問者

補足

早速の回答ありがとうございます。 では、お願いしたいと思います、 コピー元(NOW()があるセル)はシート名「リスト」のA17のセル ペースト先のシートはシート名「見積書」のF2のセル ブックは同じです。 確認お願いします。

  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.5

こんばんは。私なりにサンプルマクロを作ってみました。 貴方様のおっしゃっているように >まず、リストシートのどこかに「=NOW()」で日付を表示させる。 原価計算書シート(作業シート)のどこかにIF文を作る。「もし、見積書日付のセルが空白なら"日付決定してください"を表示、そうでなかったら空白」 ここまでは、ご自分で実行してみて下さい。 >その横にボタンを1個作り(←ここからよくわからないです。可能なんでしょうか?)クリックすることでリストシートの日付を見積書の日付表示セルにコピーする。あとは見積書日付セル=納品書日付セル… コマンドボタンを貼り付けてみてはいかがでしょうか。次のように操作すると表示することが出来ます。 ・コマンドボタンを貼り付けたいシートを表示させ、メニュバーを右クリック後表示されたプルダウンメニューからVisualBasicをクリックする。 ・表示されたツールバーの右から2番目(トンカチとスパナのマーク)をクリックし、表示されたコントロールツールボックスの左の列の上から3番目コマンドボタンをクリックして貼り付けたいところにマウスポインターをあわせ、再度クリックする。 ・貼り付けたコマンドボタンの上でダブルクリックするとコードエディターが表示されるので、カーソルが点滅している部分に書きのコードを書き込む。 Worksheets("ペーストしたいシート名").Range("ペーストしたいセル番地").value = Activesheet.range("日付を表示させたセル番地").Value ペーストしたいシートの枚数分"ペーストしたいシート名"と"ペーストしたいセル番地"を変えて式を書き込む。 ・ALT+F11キーを押して、エクセルの画面にもどり、VisualBasicツールバーの一番右側の△定規のマークをクリックしてデザインモードをOFFにする。 コマンドボタンをクリックするとマクロが走り出し、貴方様の思い通りの動作を体験できるかと思います。 ご不明な点がございましたら、お気軽に補足要求して下さい。

master-3rd
質問者

補足

ボタンはマクロを使ってしまうのですね… どうにかしてマクロを使わないですむ方法は無いのでしょうか…

  • tosi0000
  • ベストアンサー率28% (8/28)
回答No.4

私も同じ経験をしました。 親切心で日付を入れましたが、後日開いてトラブルに・・・。 私の場合には、excel保存時に強制的にマクロを実行させて、関数を日付データに置き換えました。 その後は上手く運用できてますので、問題ないかと思います。 visual basic editorを起動して、ThisWorkbookへマクロ(VBA)を入れ込む必要があります。 sheet1のA1に=now()があるとしてこんな感じです。 ファイル保存時には必ず実行されます。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)   Sheets("sheet1").Select   Range("A1").Select   Selection.Copy   Range("A1").Select   Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _   False, Transpose:=False   Application.CutCopyMode = False End Sub

master-3rd
質問者

補足

皆様、素早い回答ありがとうございます。 出来るだけ手動は嫌だし、マクロのエラーが出るのを解除するのも面倒だし…という狭間で苦しんでいます。 で、素人なりにこんな方法はどうかなと思っているのですが… 私が作った見積書は5枚のシートに分かれています。 原価計算書(品名、下代上代などを打ち込む作業シート)、見積書、納品書、請求書(この3つは表題が違うだけ)、リストシート(支払方法などのリストを呼び出すシート)です。 まず、リストシートのどこかに「=NOW()」で日付を表示させる。 原価計算書シート(作業シート)のどこかにIF文を作る。「もし、見積書日付のセルが空白なら"日付決定してください"を表示、そうでなかったら空白」 その横にボタンを1個作り(←ここからよくわからないです。可能なんでしょうか?)クリックすることでリストシートの日付を見積書の日付表示セルにコピーする。あとは見積書日付セル=納品書日付セル… こんなのダメですか? マクロを使わないでもボタン表示って可能なんでしょうか?リストボックスは出来てるのでこれも可能かなと思ったのですが… 可能だったらボタン作成あたりから方法を教えていただければとてもありがたいです。 お願いします。

  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.3

=now()の件、私の場合はショートカットで対応しています。 「ctrl」+「;」で日付が出るので日付欄は空白です。 自動という訳には行きませんが、いちいち日付を確認しながら入力する必要はありません。 マクロとなると、ファイルを開くたびに警告が出るのも(ウイルスは怖いので)難点です。

master-3rd
質問者

お礼

回答ありがとうございます。 まとめて補足させていただきましたので出来ればページ確認お願いします。

  • mneko
  • ベストアンサー率33% (46/139)
回答No.2

=now()関数では、そのbookを開いた日付になりますね! 見積書を作った日付を付けて、後日開いた時には作った日付を表示させるわけですが、これはnow()関数では無理ですので見積書を作成された日にコピーして形式を指定して貼り付けの「値」にすると解決できます。 でもこれは手動ですので忘れるケースもあると思いますので、マクロを作成され 見積書を完成した時このマクロを実行するようにすると解決できると思います。

master-3rd
質問者

お礼

回答ありがとうございます。 まとめて補足させていただきましたので出来ればページ確認お願いします。

  • jein
  • ベストアンサー率49% (2799/5705)
回答No.1

ヘッダーとフッターの設定で日付を入れればその作業を 行った日が入ります。マクロに登録してボタン化しておけば ワンクリックでもできるでしょうね。

master-3rd
質問者

お礼

回答ありがとうございます。 まとめて補足させていただきましたので出来ればページ確認お願いします。

関連するQ&A