ここから本文です

Excelで管理表を作成しております。A列に製造番号を入れるとB列に今日の日付が入力...

hay********さん

2017/8/1322:20:09

Excelで管理表を作成しております。A列に製造番号を入れるとB列に今日の日付が入力されるマクロを組んでおります。
数日後にA列のセルをを編集することがあるのですが、編集するとB列の日付が

更新されてしまいます。
A列の空白セルに入力したときは今日の日付が入力され、入力済みのセルを編集したときは日付が更新されないようにはできますでしょうか?
どなたかご教示頂ければ幸いです。
よろしくお願い致します。

補足A列の文字を削除したときはB列の日付も削除されるようにしたいです。

日付,1 Then Exit Sub,Then r.Offset,If r.Value,Target.Offset,r.Resize,空白セル

閲覧数:
113
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tai********さん

2017/8/1404:55:47

A列の空白セルに入力したときは今日の日付が入力され・・・

ですからChangeイベントを使いますね。イベントが起きたA列の行のA,B列のデータ数をカウントするだけのことかと思います。

A列のデータを削除するとB列だけが残りデータ数は1になります。
空白のセルに製造番号を入力してもデータ数は1になります。
A列を編集したときとAB列をコピペしたときはデータ数は2になります。

A列のデータを削除したときはB列も削除すればいいですね。

IF文でデータ数が1のときだけの処理を記述すればいいです。イベントが起きてデータ数0はA、Bを一緒に削除したときなのでこの時は何もしなければいいです。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Intersect(Range("A3:A1048576"), Target) Is Nothing Then Exit Sub
For Each r In Target
If WorksheetFunction.CountA(r.Resize(1, 2)) = 2 Then Exit Sub
If WorksheetFunction.CountA(r.Resize(1, 2)) = 1 Then
If r.Value = "" Then r.Offset(, 1) = ""
If r.Value <> "" Then r.Offset(, 1) = Date
End If
Next
End Sub

  • tai********さん

    2017/8/1411:39:16

    補足

    コードを試していないのですか?
    A列削除でB列も削除されるように書いていますが?

    あと条件としてはA列に複数の製造番号がコピペやフィルされたときも空白のセルなら日付が入るようにしています。もちろん複数のA列が削除されたときも同じ行のB列が削除されます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2017/8/14 20:56:49

ありがとうございます。
活用させていただきます。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

set********さん

2017/8/1400:19:31

多分、日付が入力されるシートのシートモジュールに、
>Private Sub Worksheet_Change(ByVal Target As Range)
の構文を記述しておられるかと思いますので、下記の構文に変えてみて下さい。
・但し、すでにB列のセルに日付が入っていて、A列のセルが空白のところに入力すると、その横のB列には今日の日付が入力(上書き)されてしまう構文です。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkAfter As Variant
If Target.Column <> 1 Then Exit Sub
If Target.Count <> 1 Then Exit Sub
wkAfter = Target
Application.EnableEvents = False
Application.Undo
If Target = "" Then
Target.Offset(0, 1) = Date
End If
Target = wkAfter
Application.EnableEvents = True
Target.Offset(1, 0).Select
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

aka********さん

2017/8/1323:28:54

肝心な 今日の日付を どのよう方法で 入れらているかわかりません。
1例としては
IF RANGE("B" & I )="" THEN
RANGE("B" & I)= DATE
END IF

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる