엑셀 VBA 워크시트 이벤트를 처리하는 VBA 프로시저 코드 작성

반응형

엑셀 VBA 워크시트 이벤트를 처리하는 VBA 프로시저 코드 작성

엑셀 문서 작성시 특정 워크시트의 오픈 또는 내용 변경 및 마우스 클릭 등 워크시트에서 발생하는 이벤트를 처리하는 VBA 프로시저 코드 작성에 대해 알아보겠습니다. 관련된 문제가 컴활 1급 시험에도 출제되고 있습니다.

이벤트 프로시저를 작성하려면 엑셀이 제공하는 이벤트 목록 중에서 적용하려는 이벤트를 워크시트에 연결해야 합니다.

  • 프로시저 코드를 작성하기 위해 비주얼 베이직 에디터(VBE)를 연 후 이벤트 프로시저 코드창을 엽니다.
  • 엑셀 문서창에서 하단 시트탭에서 해당 시트명을 우클릭 후 나오는 바로가기 메뉴에서 코드 보기를 클릭하면 위의 항목에 따른 단계가 한 단계 생략돼 이벤트 프로시저 코드를 작성하는 VBA 코드창이 비주얼 베이직 에디터(VBE) 화면 우측에 바로 열립니다.

 

엑셀 문서 코드바로가기

 

비주얼 베이직 에디터(VBE) 오픈

엑셀 문서 창에서 아래 항목 중 하나를 실행하여 VBE 에디터를 엽니다.

  • 메뉴탭->개발도구->코드도구탭 중 Visual Basic 클릭
  • 또는 Alt+F11

 

비주얼 베이직 에디터

에디터 좌측 프로젝트 탐색기 창에서 해당 워크시트를 선택 다음 중 하나를 실행하여 VBA 프로시저 코드 창을 엽니다.

  • 해당 워크시트 이름을 더블클릭.
  • 해당 워크시트 이름을 우클릭.

VBA 코드 창

VBE 에디터 우측에 해당 워크시트에서 처리할 프로젝트 코드 창이 열립니다.

 

VBA 코드창

코드 창 상단에는 두개의 콤보박스가 있습니다. 좌측 개체 선택 콤보박스의 드롭다운 목록에서 Worksheet를 클릭하면 우측 콤보박스에 이벤트 목록이 나열됩니다.

 

엑셀 2010 워크시트 이벤트

엑셀 2010에서 엑셀에서 제공하는 워크시트 이벤트 목록은 아래와 같습니다. 버전에 따라 약간의 차이가 있는 것 같습니다.

  • Activate
  • BeforeDoubleClick
  • BeforeRightClick
  • Calculate
  • Change
  • Deactivate
  • FollowHyperlink
  • PivotTableAfterValueChange
  • PivotTableBeforeAllocateChanges
  • PivotTableBeforeCommitChanges
  • PivotTableBeforeDiscardChanges
  • PivotTableChangeSync
  • PivotTableUpdate
  • SelectionChange

이벤트 코드 프로시저 작성

 

워크시트 이벤트 목록

위의 이미지와 같이

  • 코드 창에 ① 자동으로 임의의 이벤트 프로시저 코드가 출력됩니다. 프로시저명은 개체명_이벤트명입니다.
  • 우측 이벤트 선택 콤보박스를 클릭하면 ② 이벤트 목록이 나열됩니다.

출력된 이벤트가 처리할 이벤트가 아닌 경우 출력돤 프로시저 코드는 삭제 또는 그대로 두고, 처리할 이벤트를 이벤트 목록 상자에서 선택하면 코드 창에 해당 이벤트 프로시저 코드가 출력됩니다.

 

이벤트 프로시저 코드 예

Activate 이벤트

해당 워크시트가 열릴 때 발생하는 이벤트입니다. 아래는 워크시트가 열리면 [B2]셀에 오늘 날짜를 삽입하고 굵은 글자로 표시하는 예입니다.

1
2
3
4
Private Sub Worksheet_Activate()
[B2]=Date
[B2].Font.Bold = True
End Sub
cs

 

Change 이벤트

워크시트 내의 셀에 입력 등 변동이 있을 때 발생하는 이벤트입니다. Change 이벤트 프로시저 코드에 포함된 인자 Target은 변동된 셀을 가리키고 있습니다. 아래는 변동된 셀의 주소와 값을 MsgBox에 출력하는 예입니다.

1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address & "-" & Target.Value
End Sub
cs

 

Change 이벤트

위의 이미지는 [B2]셀에 "hellol"를 입력하고 Enter 키를 누른 후 나온 MsgBox입니다.

 

엑셀 VBA CurrentRegion 속성 기존 데이터 영역에 연속해서 데이터 추가하는 프로시저

access 필터 조건문 작성

구글 스프레드시트 매크로 버튼만들기

구글 스프레드시트 SUMPRODUCT 함수 배열간 계산 함수

 

반응형