VBA-이벤트
이벤트 기반 프로그래밍 인 VBA는 셀 또는 셀 값 범위를 수동으로 변경할 때 트리거 될 수 있습니다. 변경 이벤트는 일을 더 쉽게 만들 수 있지만 서식이 가득 찬 페이지를 매우 빠르게 끝낼 수 있습니다. 두 종류의 이벤트가 있습니다.
- 워크 시트 이벤트
- 통합 문서 이벤트
워크 시트 이벤트
워크 시트 이벤트는 워크 시트에 변경 사항이있을 때 트리거됩니다. 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 '코드보기'를 선택한 다음 나중에 코드를 붙여 넣으면 생성됩니다.
사용자는 각 워크 시트를 선택하고 드롭 다운에서 "워크 시트"를 선택하여 지원되는 모든 워크 시트 이벤트 목록을 가져올 수 있습니다.

다음은 사용자가 추가 할 수있는 지원되는 워크 시트 이벤트입니다.
Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
예
더블 클릭하기 전에 메시지를 표시하면됩니다.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
산출
셀을 두 번 클릭하면 다음 스크린 샷과 같이 메시지 상자가 사용자에게 표시됩니다.

통합 문서 이벤트
통합 문서 전체가 변경되면 통합 문서 이벤트가 트리거됩니다. 다음 스크린 샷과 같이 'ThisWorkbook'을 선택하고 드롭 다운에서 'workbook'을 선택하여 통합 문서 이벤트에 대한 코드를 추가 할 수 있습니다. 다음 스크린 샷과 같이 즉시 Workbook_open 하위 프로 시저가 사용자에게 표시됩니다.

다음은 사용자가 추가 할 수있는 지원되는 통합 문서 이벤트입니다.
Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)
예
새 시트가 생성 될 때마다 새 시트가 성공적으로 생성되었다는 메시지를 사용자에게 표시하기 만하면됩니다.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
산출
새 엑셀 시트를 생성하면 다음 스크린 샷과 같이 사용자에게 메시지가 표시됩니다.
