TOP

VBA-강의 11.1. 통합 문서 이벤트(Workbook 이벤트)

VBA 코드에 대한 트리거(스위치)가 될 수 있는 통합 문서 이벤트(예: 열기, 닫기 등)가 있을 수 있습니다.


Workbook_Open(책 열기)

통합 문서가 열릴 때 지침을 따르려면 ThisWorkbook으로 이동하여 Workbook을 선택합니다.

Workbook_Open 이벤트는 기본적으로 추가되며 통합 문서가 열릴 때 실행됩니다.

Private Sub Workbook_Open()

End Sub

예를 들어, 다음 명령을 추가하면 통합 문서가 열릴 때 대화 상자가 표시됩니다.

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose(워크북을 닫기 전 이벤트)

통합 문서를 닫기 전에 지침을 실행하려면 BeforeClose를 선택합니다.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

"Cancel" 변수를 True로 설정하면 통합 문서 닫기를 취소할 수 있습니다.

다음은 통합 문서를 닫을 때 사용자에게 확인을 요청하는 예입니다.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     '사용자가 NO로 응답하면 Cancel 변수는 TRUE 값을 갖게 됩니다(통합 문서 닫기가 취소됨).
     If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (워크북을 저장하기 전 이벤트)

이 이벤트는 통합 문서가 저장되기 직전에 발생합니다.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

"Cancel" 변수를 True로 설정하면 파일 저장을 취소할 수 있습니다.

Workbook_BeforePrint (책을 인쇄하기 전 이벤트)

이 이벤트는 통합 문서가 인쇄되기 전에 발생합니다.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

"Cancel" 변수를 True로 설정하면 파일 인쇄를 취소할 수 있습니다.

Workbook_AfterSave (워크북 저장 후 이벤트)

이 이벤트는 통합 문서를 저장한 직후에 발생합니다.

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate(워크시트 전환 이벤트)

이 이벤트는 통합 문서의 워크시트 간에 전환할 때마다 발생합니다.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

이 예에서는 활성 시트의 이름이 대화 상자에 표시됩니다.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     MsgBox "Name of Sheet : " & Sh.Name
End Sub

Workbook_SheetBeforeDoubleClick(셀 더블클릭 이벤트)

이 이벤트는 워크시트 셀을 두 번 클릭할 때 발생합니다.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

예를 들어 이 이벤트를 사용하여 선택한 시트에 따라 셀 채우기 색상을 추가할 수 있습니다.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     If Sh.Name = "Sheet1" Then
         Target.Interior.Color = RGB(255, 108, 0) '주황색
     Else
         Target.Interior.Color = RGB(136, 255, 0) '녹색
     End If
End Sub

Workbook_SheetBeforeRightClick(오른쪽 클릭 전 이벤트)

이 이벤트는 마우스 오른쪽 버튼을 클릭하기 전에 발생합니다.

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange(시트 내용 변경 이벤트)

이 이벤트는 워크시트의 내용이 변경될 때마다 발생합니다.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate(SheetCalculate 이벤트)

이 이벤트는 워크시트의 데이터가 계산되거나 다시 계산될 때마다 발생합니다.

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (선택한 셀 범위 변경 이벤트)

이 이벤트는 스프레드시트에서 선택한 셀 범위의 내용이 변경될 때마다 발생합니다.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

이 예에서는 A1 셀이 비어 있으면 채우기 색상이 변경됩니다.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     If Range("A1") = "" Then
         Target.Interior.Color = RGB(124, 255, 255) '파란색
    End If
End Sub

Workbook_NewSheet(새 시트 이벤트 추가)

이 이벤트는 통합 문서에 새 시트가 추가될 때마다 발생합니다.

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink(링크 클릭 이벤트)

이 이벤트는 링크(하이퍼텍스트)를 클릭할 때 발생합니다.

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub