- ベストアンサー
【エクセル】日付を、その都度、自動入力するには?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
シート見出しを右クリック コードの表示 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then '対象がB列(2列目) If Target.Row >= 3 Then '対象が3行目以降列(追加) If Target.Value = "" Then '対象が削除された場合(変更箇所) Target.Offset(0, -1) = "" 'A列の日付をクリア Else Target.Offset(0, -1) = Date 'A列に日付をセット End If End If End If End Sub に変更したら動くようです(ちょっと追加) マクロは詳しくないので一般機能で [Ctrl]キーを押しながら下へオートフィルで同じ日付がコピーされます [Ctrl]+[D]で上のセルがコピーされます。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の場合(ケース)がよくわからないのだが。 (1)同じ日付=操作日当日の1種類ではない。 (2)入力したら、TODAY関数のように後日変わるようでは困る のは伝わってくるのだが。 (1)どれぐらいの日付の種類はあるのか。 (2)当月、翌月、前月ぐらいの日付のどれか1日を入れる場合なのか がよくわからない。 ーー VBA絡みになるが (1)カレンダーコントロールを使い、日付をクリックして選択する。 セットする場所(セル)はアクチブセルになるだろう。(セルを選択してアクチブにしておく必要あり) (2)(1)と類似の仕組みをシート上で作る。 入力候補日付の一覧をシートにつくり、選択クリックで日付を決める。 (3)入力規則を使う。日付範囲が広範囲だと選択に苦労するが などを思いつく。質問の意味と質問者のVBA経験などが判から無いので 具体的には省略するが。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 セル範囲はコード内の範囲を調整して下さい。(複数セルの削除可) 対象のシートタブ上で右クリック→コードの表示→以下のコードを貼り付けてお試しください。 Private Sub Worksheet_change(ByVal Target As Range) 範囲 = "B3:B15" If Intersect(Target, Range(範囲)) Is Nothing Then Exit Sub For Each a In Target If a = "" Then a.Offset(0, -1) = "" Else a.Offset(0, -1) = Date End If Next End Sub
- mshr1962
- ベストアンサー率39% (7417/18945)
当日の日付でいいなら Ctrlキーを押しながら ;キーで日付の入力が出来ます。 それ以外だとVBAですね。B列に入力(変更含む)したらA列に日付をセットの一例です。 1.シート見出しを右クリックして、“コードの表示”を選択 2.左上の欄に下記のVBAをコピーする Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then '対象がB列(2列目) If Target.Value Is Null Then '対象が削除された場合 Target.Offset(0, -1) = "" 'A列の日付をクリア Else Target.Offset(0, -1) = Date 'A列に日付をセット End If End If End Sub 3.VisualBasicを閉じる
- gyouda1114
- ベストアンサー率37% (499/1320)
入力した日を入力するなら 入力セルの表示形式を日付 3/14 ショートカットで Ctrl+; 今日の日付を入力するショートカット-Ctrl+;キー http://www.relief.jp/itnote/archives/002481.php
補足
VBAを教えていただき、ありがとうございます。 私のコピーの仕方が悪いのか、うまく機能できませんでした。 何か、貼り付ける時の、コツがありましたら、ご指導願います。