| 
    
     |  | ▼みつ さん: 
 >E5に5/2といれ
 >H5の『品名』に文字(例えばリンゴ)を入れると
 >開始日の5/2に当てはまるセル(J5)にリンゴと入るようにしたいのですが‥
 >
 ワークシートのChangeイベントを利用してみては?
 以下のコードを該当ワークシートのシートモジュールにコピーし、
 E列に「開始日」をいれ、H列に「品名」を入れると、
 下のコードが実行されます。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column <> 8 Then Exit Sub
 Dim ss As String
 Dim dt As Variant
 Dim dt1 As Date, diff As Long
 ss = Target.Value
 If Len(ss) < 1 Then Exit Sub
 dt = Target.Offset(, -3).Value
 If IsEmpty(dt) Then Exit Sub
 
 dt1 = [I2].Value
 diff = dt - dt1 + 1
 Application.EnableEvents = 0
 Target.Offset(, diff).Value = ss
 Application.EnableEvents = 1
 End Sub
 
 上のコードで
 最初の行に
 >  If Target.Column <> 8 Then Exit Sub
 と書いてあります。
 Target は変化のあったセルのことです。
 上の一行は、
 セルに入力があったもののうち 列がH列でなければ終了せよ、
 と言っています。逆にいえば、H列への入力のときだけ、
 それ以降のコードが実行されるということです。
 [I2]セルの日付をみて、それとTarget行のE列の日付の差分だけ列を右に移動
 したセルに、Targetセルの値をコピーします。
 
 |  |