• ベストアンサー

受付一覧表に詳細入力した時の日付を自動補充したい

不規則に発生する依頼をエクセルの受付一覧(受付日、担当者、内容)に記録する際に担当者を入力したら受付日に当日を自動セットさせたいのです。 ・日付欄に「IF(担当者<>"",TODAY(),)」では1)ファイルを開く度に今日の日付になってしまう。2)担当者が空白のとき1900/1/0になってしまう。 ・一度日付が入ったら変わらないようにしたいと思い IF(日付<>"を前につけると循環参照でエラーになってしまう。 かといって各行に日付セットのマクロボタンを設けるのも大仰だし・・・。 この2点をどうしたら良いでしょうか。 お知恵をお貸しください。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

マクロの力を借りるほうが手っ取り早いと思います  A  B  C 日付 担当者・・・ となっているとして シートの名前のタブを右クリック、コードの表示をクリック VBエディターが起動しますので Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then Cells(Target.Row, 1).Value = Date End If End Sub をコピィして閉じます。 B列に名前を入れると、A列に当日の日付がはいります。 コードの意味をわかっていただけるならば 一度、入れた名前を変更したとき、或いは名前を入れた部分を空白にしたときも その日の日付が入ります。後は使いやすいように加工してみてください。

noname#252806
質問者

お礼

回答ありがとうございます。 シートに埋め込むマクロはほとんど経験無しだったので、 セルを限定した指定方法は知りませんでした。 ’If Target.Column = 2 Then’ でなるほどと理解しました。 このコードを加工して使いたいと思います。 助かりました。 ありがとうございました。

その他の回答 (3)

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

入力の手間を省くと言う事なら 別セルに=TODAY()とでも入れて置き、入力規制のリストでそのセルのみを指定しておけば3クリックで入力は可能になります。 どうしても自動で入力させたいならマクロしか方法は無いですが。

noname#252806
質問者

お礼

回答ありがとうございます。 なるほど、入力規則はこんな使い方もあるのですね。 手入力より楽だしマクロを知らない人でも使えます。 参考になりました。 ありがとうございます。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

この場合は、Worksheet_Changeイベントが便利 Private Sub Worksheet_Change(ByVal Target As Range) Dim 対象セル As Range Dim 担当者 As Integer Dim 日付列 As Integer 担当者 = 1 日付列 = 2 For Each 対象セル In Target If 対象セル.Column = 担当者 And _ 対象セル.Value <> "" And _ 対象セル.Offset(0, 日付列 - 1) = "" _ Then 対象セル.Offset(0, 日付列 - 1).Value = Date Next 対象セル End Sub 処理したいシートタブを右クリック、コードの表示を選択 上のコードをコピペ 担当者 = 1 日付列 = 2 の値をそれぞれの列を数字で設定 例えば、担当者記入列がA列なら1、E列なら5に変更 設定が終わったら、マクロの画面を閉じる 担当者を入力すれば日付が入る 担当者を変更の場合は日付の変更はしないようにしている 日付を変更する場合は、直接日付を書き換えるか 一旦、担当者、日付を削除し、再度、担当者を入力する 詳細は大事 出入力のセルや列は仕様は、質問が指定しないと 回答者が要らない説明や処理、仕様を考え説明しなければならない これは本末転倒だと私は思う 質問者は、出入力先は必ず指定すること、仕様は考えうる範囲内で 質問文に含めること  以上

noname#252806
質問者

お礼

回答ありがとうございます。 ’Worksheet_Changeイベント’ 提示のコードを参考に一覧表を 作りたいと思います。 ありがとうございました。

noname#99913
noname#99913
回答No.1

マクロがいやなら、どこか1か所にその日の日付を入力しておき、そこを参照するようにしたらどうでしょうか。日付入力は1日1回で済みます。

noname#252806
質問者

お礼

回答ありがとうございます。 関数方式ですと、前日までの行も その日の日付に変わってしまいました。

関連するQ&A