엑셀

Worksheet _change 이벤트를 이용해 값이 바뀌면 자동으로 작업 처리하기

파란바람이 2021. 7. 28. 13:23

안녕하세요.

 

셀에 값을 입력하면 자동으로 동작하는 작업을 원하는 경우가 있습니다.

Worksheet_change 이벤트가 이럴 때 사용하는 이벤트입니다.

 

완성 파일 다운로드

Worksheet_change.xlsm
0.02MB

 

[G2:H4], [J2:K4] 셀 범위에 값을 입력하면 [D2:E4] 셀 범위 수식이 계산되고 D열과 E열 값이 1 이상이고, 두 값이 같으면 A열에 'a'를 나타내고 B열에 시간을 나타내는 동작을 합니다.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    
    Set KeyCells = Range("G2:H2,J2:K2")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        If Range("D2") >= 1 And Range("E2") >= 1 And Range("D2") = Range("E2") Then
            Range("A2") = "a"
            Range("B2") = Now
        Else
            Range("A2") = ""
            Range("B2") = ""
        End If
    End If
    Set KeyCells = Range("G3:H3,J3:K3")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        If Range("D3") >= 1 And Range("E3") >= 1 And Range("D3") = Range("E3") Then
            Range("A3") = "a"
            Range("B3") = Now
        Else
            Range("A3") = ""
            Range("B3") = ""
        End If
    End If
    Set KeyCells = Range("G4:H4,J4:K4")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        If Range("D4") >= 1 And Range("E4") >= 1 And Range("D4") = Range("E4") Then
            Range("A4") = "a"
            Range("B4") = Now
        Else
            Range("A4") = ""
            Range("B4") = ""
        End If
    End If
End Sub