Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range: Set r = Target
If r.CountLarge = 1 And _
r.Row >= 4 And r.Row <= 23 And _
r.Column >= 3 And r.Column <= 6 Then
Application.EnableEvents = False
Dim r1 As Range: Set r1 = Cells(r.Row, "C")
Dim r2 As Range: Set r2 = Cells(r.Row, "D")
Dim r3 As Range: Set r3 = Cells(r.Row, "E")
Dim r4 As Range: Set r4 = Cells(r.Row, "F")
If r.Column = 3 Then
If r.Value Then
Range(r2, r4).Value = True
Else
Range(r2, r4).Value = False
End If
Else
If r2 And r3 And r4 Then
r1.Value = True
Else
r1.Value = False
End If
End If
Application.EnableEvents = True
End If
End Sub
では、コードについて解説していきます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range: Set r = Target
If r.CountLarge = 1 And _
r.Row >= 4 And r.Row <= 23 And _
r.Column >= 3 And r.Column <= 6 Then
Application.EnableEvents = False
'省略
Application.EnableEvents = True
End If
End Sub
Dim r1 As Range: Set r1 = Cells(r.Row, "C")
Dim r2 As Range: Set r2 = Cells(r.Row, "D")
Dim r3 As Range: Set r3 = Cells(r.Row, "E")
Dim r4 As Range: Set r4 = Cells(r.Row, "F")
If r.Column = 3 Then
If r.Value Then
Range(r2, r4).Value = True
Else
Range(r2, r4).Value = False
End If
Else
If r2 And r3 And r4 Then
r1.Value = True
Else
r1.Value = False
End If
End If