응용 프로그램 수준 이벤트는 전체 응용 프로그램에서 작동합니다 (이 참조에서는 Excel). 그러나 응용 프로그램 이벤트를 활성화하는 것은 통합 문서 또는 워크 시트 이벤트를 만드는 것만 큼 쉽지 않습니다. 그러나 나는 그것이 그렇게 까다 롭지 않다는 것을 확신합니다. 이 기사에서는 몇 가지 간단한 단계로 Excel VBA에서 응용 프로그램 이벤트를 만들고 사용하는 방법을 배웁니다.

1 단계 : 클래스 모듈에서 이벤트 객체 생성

이벤트 객체를 생성하려면 클래스 모듈을 사용해야합니다.

  • `link : / modules-class-modules-in-vba-vba-class-modules-and-how-to-use-them [class module]`을 삽입합니다. 원하는 이름을 지정하십시오. 이름을 MyAppEvents로 지정했습니다.

  • 키워드 WithEvents로 애플리케이션 유형의 이벤트 변수를 정의하십시오.

Private WithEvents myApp As Application
  • class_initialize () 서브 루틴에서이 이벤트를 초기화합니다.

왼쪽 드롭 다운에서 수업을 선택합니다. 그런 다음 오른쪽 상단 드롭 다운에서 초기화를 선택합니다.

image

Private Sub Class_Initialize()

Set myApp = Application

End Sub
  • 이제 사용하려는 이벤트를 정의하십시오. 왼쪽 상단 드롭 다운에서 이벤트 개체를 선택합니다. 사용 가능한 모든 이벤트 처리 절차는 오른쪽 상단 드롭 다운 메뉴에서 사용할 수 있습니다. 필요한 항목을 선택하고 해당 이벤트가 트리거 될 때 수행 할 작업을 정의합니다 .image : https : //www.office-skill.site/images/wp-content-uploads-2020-01-Capture-37.jpg [image, 너비 = 540, 높이 = 208]

SheetActivate 이벤트를 사용합니다. 사용자가 열려있는 통합 문서의 시트간에 전환 할 때마다 통합 문서의 이름과 사용자가 선택한 시트가 표시됩니다.

Private Sub myApp_SheetActivate(ByVal Sh As Object)

MsgBox ActiveWorkbook.Name & "-" & Sh.Name

End Sub

여기에서 정의하려는 이벤트를 얼마든지 정의 할 수 있습니다.

image

이벤트는 즉시 작동하지 않습니다. 이것이 첫 번째 단계였습니다.

클래스 모듈이므로 이벤트를 활성화하기 위해 객체를 생성해야합니다.

이제 일반 서브 루틴에서만 이러한 이벤트를 시작하면됩니다.

2 단계 : 일반 모듈에서 이벤트 스타터 서브 루틴 생성

이제 이벤트 클래스가 있습니다. 해당 클래스의 객체를 생성하고 초기화하면됩니다. 이 서브 루틴을 실행하면 이벤트 클래스에 정의 된 모든 이벤트가 작동하기 시작합니다.

image

  • 일반 모듈을 삽입하십시오.

  • 생성 한 클래스의 변수를 정의합니다.

Private AppE As MyAppEvents
  • 서브 루틴에서 초기화하십시오. 원하는대로 이름을 지정할 수 있습니다.

Private Sub StartEvents()

Set AppE = New MyAppEvents

End Sub

  • F5 키를 사용하여이 코드를 실행하십시오. 선택적으로 워크 시트에서 이벤트를 시작하려는 경우 워크 시트의 단추에이 매크로를 할당 할 수 있습니다.

그리고 끝났습니다. 이제 시트를 전환 할 때마다 통합 문서가 포함 된 코드가 열려있는 한 통합 문서와 시트의 이름이 포함 된 메시지 상자가 나타납니다.

image

힘들었나요? 나는 그렇게 생각하지 않는다. 아래 댓글 섹션에서 어떻게 생각하는지 알려주세요.

VBA 응용 프로그램 이벤트 켜기 및 끄기 일반 모듈에서 매크로를 실행하면 이벤트가 포함 된 통합 문서를 닫을 때까지 항상 트리거됩니다. 그러나 당신은 그들이 당신의 의지에 따라 그들을 켜고 끌 수 있도록 할 수 있습니다. 이를 수행하는 두 가지 방법이 있습니다.

이벤트 개체 무효화 EnableEvents를 False로 설정

1. 이벤트 객체 무효화

별도의 서브 루틴에서 이벤트 객체를 Nothing

Private Sub StopEvents()

Set AppE = Nothing

End Sub

로 설정합니다. 이 코드를 실행하면 이벤트 작동이 중지됩니다. 워크 시트의 단추에 넣어 이벤트를 중지 할 수 있습니다. 이제 이러한 특정 이벤트를 시작하고 중지하는 두 개의 버튼이 있습니다. AppE 개체에 의해 생성 된 이벤트를 중지합니다.

2. EnableEvents를 False로 설정

두 번째 방법은 이벤트를 비활성화하는 것입니다. 모든 이벤트를 잡을 수 없게 만들기 위해 Application 클래스의 EnableEvents 속성을

거짓.

Private Sub StopEvents()

Application.EnableEvents= False

End Sub

위의 코드는 모든 이벤트를 비활성화합니다. 기본 엑셀 이벤트도 있습니다. 다시 시작할 때까지 작동하지 않습니다. StartEvents () 서브 루틴 (위)을 실행하더라도 이벤트가 작동하지 않습니다. 모든 이벤트가 다시 작동하도록하려면 EnableEvents 속성을 다시 True로 설정해야합니다.

따라서 이벤트를 시작할 때마다 이벤트가 작동하도록하려면이 코드 줄을 하위에 추가하십시오.

Private Sub StartEvents()

Application.EnableEvents = True

Set AppE = New MyAppEvents

End Sub

image

예 여러분,이 방법으로 엑셀에서 애플리케이션 이벤트를 사용할 수 있습니다. 이것이 충분히 설명 적이며 아래 주석 섹션에서 Excel VBA의 응용 프로그램 수준 이벤트를 이해하는 데 도움이되었는지 알려주십시오. 여기에 추가 할 것이 있으면 적어 두십시오. 아래 의견 섹션에서이 기사 또는 기타 Excel VBA 관련 주제와 관련된 질문을 할 수 있습니다.

아래 작업 파일을 다운로드하십시오.

image 48

관련 기사 :

link : / events-in-vba-the-events-in-excel-vba [Excel VBA의 이벤트]| Excel에는 7 가지 유형의 이벤트가 있습니다. 각 이벤트는 다른 범위에서 처리됩니다. 응용 프로그램 이벤트는 통합 문서 수준에서 다룹니다. 시트 수준의 통합 문서. 범위 수준의 워크 시트 이벤트입니다.

link : / events-in-vba-the-worksheet-events-in-excel-vba [Excel VBA의 워크 시트 이벤트]* | 워크 시트 이벤트는 지정된 이벤트가 발생할 때 매크로를 실행하려는 경우 매우 유용합니다. 그 종잇장.

link : / events-in-vba-workbook-events-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하는 통합 문서 이벤트]| 통합 문서 이벤트는 전체 통합 문서에서 작동합니다. 모든 시트가 통합 문서의 일부이므로 이러한 이벤트도 해당 시트에서 작동합니다.

link : / events-in-vba-prevent-that-an-automacroeventmacro-executes-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하여 자동 매크로 / 이벤트 매크로 실행 방지]* | auto_open 매크로 실행을 방지하려면 Shift 키를 사용하십시오.

link : / events-in-vba-chart-object-events-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하는 차트 개체 이벤트]* | 차트는 복잡한 개체이며 여기에 연결 한 여러 구성 요소가 있습니다. 차트 이벤트를 만들기 위해 클래스 모듈을 사용합니다.

인기 기사 :

link : / keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [50 개의 Excel 단축키로 생산성 향상]| 작업 속도를 높이십시오. 이 50 개의 바로 가기를 사용하면 Excel에서 작업 속도가 더욱 빨라집니다.

link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]| 이것은 다른 범위와 시트에서 값을 조회하는 데 사용되는 Excel의 가장 많이 사용되고 인기있는 기능 중 하나입니다.

link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]| 이 놀라운 기능을 사용하여 조건으로 값을 계산합니다. 특정 값을 계산하기 위해 데이터를 필터링 할 필요가 없습니다.

Countif 기능은 대시 보드를 준비하는 데 필수적입니다.

link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]| 이것은 또 다른 대시 보드 필수 기능입니다. 이를 통해 특정 조건에 대한 값을 합산 할 수 있습니다.