• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelで入力日を保存したい)

Excelで入力日を保存したい方法

このQ&Aのポイント
  • エクセルでチェックボックスを作り、チェックボックスにチェックが入った日付を表示させる方法として、=IF(F8=TRUE,TODAY(),"")関数を使用していますが、この方法ではファイルを開いた日に更新されてしまうため、保存されません。
  • そのため、マクロを使用することでチェックした日付を自動的に保存することができます。具体的な方法については、マクロの設定やVBAを使用する方法などがあります。
  • また、チェックボックスにチェックを入れ、日付を入力すべきセルにctrl+;を入力する方法もありますが、操作が難しい人にとっては、日付を手書きで記入する方法が主な選択肢となってしまいます。そのため、パソコンでの管理を進めるためには、マクロやVBAを使用する方法がより効果的です。

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

  • ベストアンサー
noname#212313
noname#212313
回答No.3

 マクロプログラムのコードについてのみです(マクロ起動のトリガーを何にするか、そのための設定等は割愛)。要は「操作をマクロ記録させてみて、コードを確かめ、必要ならいじる」ということで、解決できるのではないかと思います。  まず、「Ctrl+;」をマクロ記録することが考えられます。セルA1が選択されている状態でマクロ記録してみると、以下のようになります。 ---------------------------------- Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2015/8/16 ユーザー名 :f ' ' ActiveCell.FormulaR1C1 = "8/16/2015" Range("A2").Select End Sub ----------------------------------  これですと、常に「2015/8/16」(←このマクロを記録した日)になってしまいます。これではいけませんから、"=TODAY()"関数を利用することを考えてみます。しかし、関数だけではシートを開いた日付になってしまいますから、 1.=TODAY()を入力する 2.入力したセルをコピーする 3.同じセルに「値だけ」でペーストする という手順にしてみます。この操作をセルA1で記録すると、以下のようになります。 ---------------------------------- Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2015/8/16 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "=TODAY()" Range("A1").Select Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False End Sub ----------------------------------  ちょっと日付を変えてのチェックしていませんが、マクロを動作させるとセルには日付の文字列が入っていますので、おそらくこれでご希望の動作になるはずです。

kasuminmucchi
質問者

お礼

ありがとうございます。 質問をする前に「ctrl+;」のマクロを作成したら失敗してしまったので、ご教示通りにやったらできました。日付が変わったらまた試してみます。 原則として入荷すれば日付を入力するという作業なので、チェックボックスを使わないで済みます。「日付入力」という実行ボタンを作ってみようと思います。 今後も教えていただいたことを仕事や勉強に活かしていきたいと思います。 こんなに早くご回答くださったことに感動し感謝申し上げます。

その他の回答 (4)

回答No.5

TODAY()というのはそういう動きをする関数ですよね。 ご希望のようにとたいなら、手入力ですね、1番簡単正確です。

noname#212313
noname#212313
回答No.4

 #3です。  さきほどのマクロの二番目で、最初のセルの指定をしていませんでした。あのままでは、セルA1以外が選択されていると、誤動作してしまいます。不注意なバグで、大変申し訳ありあません。  1行目に、マウスでセルA1のクリックを付け加えると、以下のようになります。 ---------------------------------- Range("A1").Select ←この1行を付け加える(マウスでA1をクリックのマクロ) ActiveCell.FormulaR1C1 = "=TODAY()" ←ここ以降、同じ Range("A1").Select Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False End Sub ----------------------------------  こうしますと、選択されているセルがどこであっても、セルA1に当日日付の文字列が入ります。大変申し訳ありませんでした。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

安直な回答も寄せられていますが、エクセルのチェックボックスには「フォームコントロール」と「アクティブXコントロール」の2種類あります。 そのどちらを使うのかによって、具体的にどうしたらいいのかの方法も当然違ってきます。アナタは今何を使おうとしているのか(使いたいのか)、また回答者の方は一体何を前提に喋っているのか、間違えないようよく注意して作成してください。 ご利用のエクセルのバージョンも不明のご相談ですが、仮に比較的新しいExcel2010の場合でお話しします。違うバージョンを使っている場合は、自力で適切に読み替えて作業してください。 >マクロでどうにかならないかと考えています 具体的にどこ番地のセルにマクロで日付を記入させたいのかといった情報も提示されていないので、寄せられたマクロをご自分でしっかり修正してご利用ください。 手順: フォームコントロールのチェックボックスを1個、シート上に配置する 右クリックしてマクロの登録を開始、新規作成を開始 Sub チェック1_Click()  dim s as shape  set s = activesheet.shapes(application.caller)  if s.oleformat.object.value = 1 then   s.topleftcell.offset(1, 2) = date  else   s.topleftcell.offset(1, 2).clearcontents  end if End Sub のように作成、終了してエクセルに戻る チェックボックスにチェックを入れたり消したりすると、右のセルに日付が入る (必要に応じてセルの幅や書式設定を調整する) チェックボックスが実は複数個必要な時は、作成したチェックボックスをコピーして配置する。

kasuminmucchi
質問者

補足

詳しい情報の記載がないにもかかわらず、手順のわかりやすい説明をありがとうございます。 フォームコントロールとアクティブXコントロールの違いをよく理解しておらず、フォームコントロールを使いました。 チェックボックスの右隣のセルに日付を入れようとしています。その右隣のセルをリンクさせています。チェックボックスにマクロを登録するといいのでは?と思った次第です。 また、職場のofficeのバージョンは2007で、この作業をする時間がないので自宅のパソコン(バージョンは2013です)で試作しようとしています。 とにかく、これからいただいた回答を読み替えるなどしてやってみたいと思います。 また今後の勉強に役立たせたいと思います。 初めての投稿でこのようにご親切に回答いただいたことに感動し感謝申し上げます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

チェックボックスのClickイベントで、該当セルに日付(Date)を発生させればいいのでは? それ以外なら、校閲の変更履歴の表示をonにする方法ですね。 そうすれば変更(追加・修正・削除)されたセルに、変更内容と日時がコメントとして登録されます。

kasuminmucchi
質問者

お礼

ありがとうございます。 表示させることに気を取られ、変更履歴を忘れていました。 これを活用したいと思います。

関連するQ&A