엑셀 특정 셀 값 변경 시 매크로 자동 실행 방법(매크로, 이벤트 핸들러)

2023. 3. 10. 14:56 / 서기랑

 엑셀에서 매크로는 보통 코드를 작성하고 사용자가 실행하는 방식으로 작동한다.

 하지만 이벤트 핸들러를 사용한다면 특정 셀 값을 변경하거나 특정 셀 값에 원하는 값이 입력되거나 하는 등의 조건으로 매크로가 자동으로 실행되도록 할 수 있다.

목차

     

    엑셀 특정 셀 값 변경 시 매크로 자동 실행하기

    1. vba 실행.

     엑셀에서 [ALT + F10]을 눌러 vba를 실행하자.

     

    2. 시트 모듈에 코드 작성 준비.

     사용자가 직접 실행하는 일반적인 매크로는 보통 새 모듈을 추가 후 코드를 입력하지만, 셀 값이 변경되는 등 시트에 변화에 따라 자동으로 실행되는 이벤트 핸들러 매크로는 시트 모듈에 코드를 넣어야 한다.

     (새 모듈에 이벤트 핸들러 코드를 넣으면 작동되지 않는다.)

     

     vab 창 오른쪽에 매크로가 자동으로 실행되기를 원하는 시트를 더블 클릭(예 - sheet1 더블 클릭)하면 코드를 입력할 수 있는 시트 모듈 창이 나타난다.

     창이 나타나면 창의 상단의 왼쪽 드롭다운 메뉴를 [worksheet], 오른쪽 드롭다운 메뉴를 [chang]로 선택하자.

     아래와 같은 코드가 생성될 것이다.

     (이미 작성한 코드가 있다면 드롭다운 메뉴 선택 없이 그냥 붙여 넣으면 된다.)

    Private Sub Worksheet_Change(ByVal Target As Range)

    End Sub

     

    3. 코드 작성.

     Private Sub 코드가 생성 됐다면 이제 그 아래에 작동하길 원하는 코드를 넣으면 된다.

     셀의 변화 즉 이벤트 발생 시 자동으로 실행되는 매크로이니 만큼 코드만 붙여 넣으면 따로 실행 과정은 필요 없다.

     

     예를 들어 C5셀에 OK라는 값이 입력됐을 때 자동으로 소리가 나도록 하고 싶다면 아래의 코드를 넣고 셀에 값을 입력하기만 하면 소리가 난다.

    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$C$5" And Target.Value = "OK" Then
      Beep
     End If
    End Sub

    셀에 값 입력 시 자동 실행 매크로

     

    그 외 내용

    - 이벤트 핸들러는 시트에서 한번만 사용 가능하다.

     이벤트 핸들러의 서브루틴은 시트에서 한 번만 작성할 수 있다.

     때문에 시트에서 자동으로 작동하는 기능이 많더라도 모두 해당 서브루틴에 넣어야 한다.

     

    - 그 외에 코드 작성은 크게 다르지 않다.

     이벤트 핸들러라고 해도 매크로 작성 코드는 크게 다르지 않다.

     사용자가 실행할 때 실행되느냐, 조건이 맞는 이벤트가 발생하면 자동으로 실행되느냐의 차이라고 보면 되지 않을까 한다.

     다만 이벤트 핸들러는 자동으로 실행되는 만큼 잘못된 조건을 넣지 않도록 조금 더 주의해야 한다.