|
すてぃっち さん、こんばんわ。
>別の質問なのですが、シートの構成が上記と異なる場合(以下の表)のコードについてアドバイスをいただけたら幸いです。
>L列に"結果"→M,O,Q,S列での結果が入る列(数式)
>M列("確認項目")に入力があったときに、N列に"日付表示"
>O列("確認項目")に入力があったときに、P列に"日付表示"
>Q列("確認項目")に入力があったときに、R列に"日付表示"
>S列("確認項目")に入力があったときに、S列に"日付表示"
>
>U列に"結果"→V,X,Z.AB列での結果が入る列(数式)
>V列("確認項目")に入力があったときに、W列に"日付表示"
>X列("確認項目")に入力があったときに、Y列に"日付表示"
>Z列("確認項目")に入力があったときに、AA列に"日付表示"
>AB列("確認項目")に入力があったときに、AC列に"日付表示"
>
>AD〜AE列に"備考1"、"備考2"がそれぞれ入っています
>
>AF列に"結果"→AG,AI,AK列での結果が入る列(数式)
>AG列("確認項目")に入力があったときに、AH列に"日付表示"
>AI列("確認項目")に入力があったときに、AJ列に"日付表示"
>AK列("確認項目")に入力があったときに、AL列に"日付表示"
>
>AM列に"結果"→AN,AP,AR列での結果が入る列(数式)
>AN列("確認項目")に入力があったときに、AO列に"日付表示"
>AP列("確認項目")に入力があったときに、AQ列に"日付表示"
>AR列("確認項目")に入力があったときに、AS列に"日付表示"
>
>AT〜AU列に"備考1"、"備考2"がそれぞれ入っています
常に確認項目の隣に日付表示があるので、
1行目に、それぞれ確認項目、日付表示という見出しセルがあるとして。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count = 1 Then
If Target.Row > 1 Then '1行目はパス
With ActiveSheet.Cells(1, Target.Column)'1行目が見出し
If .Value = "確認項目" Then 'Changeした列の1行目の値が確認項目
If .Offset(0, 1).Value = "日付表示" Then 'その隣の値が日付表示(念のため)
Application.EnableEvents = False 'イベントがおきないように
'上記分岐をパスしたTargetセルの右隣のセルの内容
With Target.Offset(0, 1)
Select Case Target.Value
Case "": .ClearContents
Case Else: .Value = Date
End Select
End With
Application.EnableEvents = True 'イベント可
End If
End If
End With
End If
End If
End Sub
こんな感じです。
|
|