Excel에서 VBA를 사용하여 포함 된 차트 이벤트
차트 시트 이벤트 (link : / tips-how-to-move-a-chart-to-a-new-sheet-in-excel [worksheet 특히 차트 용]
)를 사용하는 것은 매우 간단합니다. 그러나 임베디드 차트에서 이벤트를 사용하는 경우 그렇게 간단하지 않습니다. 하지만 차트가 포함 된 이벤트는 활성화하기가 그리 어렵지 않습니다. 그것은`link : / events-in-vba-how-to-create-application-level-events-in-excel-vba [creating application events]`와 매우 유사합니다. 더 이상 지체하지 않고 시작하겠습니다.
따라서 포함 된 차트 이벤트를 활성화하는 데는 두 단계가 있습니다. 첫 번째는 차트 이벤트 클래스를 만들고 이벤트를 정의하는 것입니다. 두 번째는 해당 이벤트 클래스의 객체를 만드는 것입니다. 그게 다야.
1 단계 : 차트 이벤트 클래스 생성 및 이벤트 정의
-
class module을 삽입합니다. 원하는 이름을 지정하십시오. 나는 그것을 ChartClass라고 명명했습니다.
-
키워드 WithEvents로 차트 유형의 이벤트 변수를 정의하십시오.
Private WithEvents CEvents As Chart
-
class_initialize () 서브 루틴에서이 이벤트를 초기화합니다.
왼쪽 드롭 다운에서 수업을 선택합니다. 그런 다음 오른쪽 상단 드롭 다운에서 초기화를 선택합니다.
Private Sub Class_Initialize() Set CEvents = ActiveSheet.ChartObjects(1).Chart End Sub
여기서는 해당 시트에 생성 된 첫 번째 차트로 CEvents 차트를 초기화합니다. 1은 활성 시트에있는 차트 개체의 인덱스 번호입니다.
-
이제 사용하려는 이벤트를 정의하십시오. 왼쪽 상단 드롭 다운에서 CEvent 객체를 선택합니다. 사용 가능한 모든 이벤트 처리 절차는 오른쪽 상단 드롭 다운 메뉴에서 사용할 수 있습니다. 필요한 것을 선택하고 해당 이벤트가 트리거 될 때 수행 할 작업을 정의하십시오.
사용법을 설명하기 위해 CEvents_Activate 이벤트를 선택합니다. 사용자에게 msg box에서 차트 이벤트가 활성화되었음을 보여줄 것입니다.
Private Sub CEvents_Activate() MsgBox "The chart Events are working" End Sub
여기서 우리의 일은 끝났습니다. 여기에서 차트 유형에 사용할 수있는 이벤트에서 원하는만큼의 이벤트를 만들 수 있습니다. 하지만 이벤트는 수업 일 뿐이므로 아직 작동하지 않습니다. 일반 모듈 또는 개체 모듈의 하위에이 클래스의 개체를 만들어야합니다. 그런 다음 그 서브를 실행하십시오.
그 후 이벤트가 작동하기 시작합니다.
2 단계 : 모듈에서 차트 클래스 개체를 만듭니다.
-
일반 모듈을 삽입하십시오.
-
전에 만든 클래스의 변수를 선언하십시오.
Dim mychart As ChartClass
-
하위를 만들고 ChartClass 클래스의 개체로 변수를 초기화합니다.
Sub activateChartEvent() Set mychart = New ChartClass End Sub
F5를 사용하여이 서브를 실행하십시오. 이 코드를 실행하면 차트 eventSet CEvents = ActiveSheet.ChartObjects (1) .Chart. * 초기화에이 줄을 사용 했으므로 현재 활성화 된 시트의 첫 번째 차트에 대해 차트 이벤트가 활성화됩니다. 이제 현재 활성 시트에서 첫 번째 차트를 클릭하면 차트 이벤트가 작동 중이라는 메시지가 표시됩니다.
VBA 응용 프로그램 이벤트 켜기 및 끄기 일반 모듈에서 매크로를 실행하면 이벤트가 포함 된 통합 문서를 닫을 때까지 항상 트리거됩니다. 그러나 원하는대로 켜고 끌 수 있습니다. 이를 수행하는 두 가지 방법이 있습니다.
이벤트 개체 무효화 EnableEvents를 False로 설정
1. 이벤트 객체 무효화
별도의 서브 루틴에서 이벤트 객체를 Nothing
Private Sub StopEvents() Set Mychart= Nothing End Sub
로 설정합니다. 이 코드를 실행하면 이벤트 작동이 중지됩니다. 워크 시트의 단추에 넣어 이벤트를 중지 할 수 있습니다. 이제 이러한 특정 이벤트를 시작하고 중지하는 두 개의 버튼이 있습니다. AppE 개체에 의해 생성 된 이벤트를 중지합니다.
2. EnableEvents를 False로 설정
두 번째 방법은 이벤트를 비활성화하는 것입니다. 모든 이벤트를 잡을 수 없게 만들기 위해 Application 클래스의 EnableEvents 속성을 False로 설정합니다.
Private Sub StopEvents() Application.EnableEvents= False End Sub
위의 코드는 모든 이벤트를 비활성화합니다. 기본 엑셀 이벤트도 있습니다. 다시 시작할 때까지 작동하지 않습니다. StartEvents () 서브 루틴 (위)을 실행하더라도 이벤트가 작동하지 않습니다. 모든 이벤트가 다시 작동하도록하려면 EnableEvents 속성을 다시 True로 설정해야합니다.
따라서 이벤트를 시작할 때마다 이벤트가 작동하도록하려면이 코드 줄을 하위에 추가하십시오.
Private Sub StartEvents() Application.EnableEvents = True Set mychart = New ChartClass End Sub
통합 문서가 열릴 때마다 Custome Chart 이벤트 시작 최종 사용자를위한 도구를 개발하는 경우 이벤트가 자동으로 작동하도록 할 수 있습니다. 이 경우 Workbook_open () 이벤트를 사용하는 대신`link : / events-in-vba-workbook-events-using-vba-in-microsoft-excel [Workbook object]`에 이벤트 스타터를 넣을 수 있습니다. 일반 모듈. 이렇게하면 이벤트가 포함 된 통합 문서를 열 자마자 이벤트 개체가 초기화됩니다.
예 여러분,이 방법으로 Excel에서 포함 된 차트 이벤트를 사용할 수 있습니다.
이것이 충분히 설명적이고 Excel VBA의 응용 프로그램 수준 이벤트를 이해하는 데 도움이되었는지 알려주세요. 아래 댓글 섹션에 귀하의 생각을 적으십시오. 여기에 추가 할 것이 있으면 적어 두십시오. 아래 의견 섹션에서이 기사 또는 기타 Excel VBA 관련 주제와 관련된 질문을 할 수 있습니다.
아래 작업 파일을 다운로드하십시오.
관련 기사 :
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 함수 사용 방법]
| 이것은 또 다른 대시 보드 필수 기능입니다. 이를 통해 특정 조건에 대한 값을 합산 할 수 있습니다.