통합 문서를 열지 만 매크로 비활성화 (Microsoft Excel)
Bob은 매크로를 사용하여 통합 문서의 정보를 처리하고 있습니다. 그는 매크로가 AutoClose 매크로가있는 두 번째 통합 문서를 열기를 원하지만 두 번째 통합 문서가 닫힐 때 실행되는 것을 원하지 않습니다.
그는 두 번째 통합 문서의 매크로를 활성화하지 않고 첫 번째 통합 문서의 매크로 제어하에 두 번째 통합 문서를 여는 방법을 찾고 있습니다.
두 번째 통합 문서를 매크로 제어에서 열 때 매크로를 비활성화 할 수있는 방법은 없습니다. (수동으로 여는 경우 통합 문서가 열릴 때 Shift 키를 누르고있을 수 있지만 매크로에 도움이되지 않습니다. 해당 키를 심을 손가락이 없습니다!)
그러나 몇 가지 해결 방법이 있습니다. 첫 번째는 다음과 같은 방식으로 두 번째 통합 문서를 닫는 코드를 수정하는 것입니다.
Application.EnableEvents = False Workbooks("SecondBook.xls").Close Application.EnableEvents = True
EnableEvents 속성을 False로 설정하면 발생할 이벤트 (통합 문서 닫기)가 AutoClose 매크로를 트리거하지 않습니다.
그런 다음 나중에 이벤트를 계속할 수 있도록 EnableEvents 속성을 True로 설정할 수 있습니다.
또 다른 해결 방법은 두 번째 통합 문서의 AutoClose 매크로에 일종의 “플래그”를 설정하는 것입니다. 이 플래그는 첫 번째 통합 문서가 열려 있는지 여부를 테스트 할 수 있으며 열려있는 경우 AutoClose 매크로에서 주 코드를 실행하지 않습니다.
이렇게하려면 모듈 페이지 맨 위에있는 두 번째 통합 문서에 다음 코드를 추가합니다.
Dim AutoCloseDisabled as Boolean Sub DisableAutoClose() AutoCloseDisabled=True End Sub
AutoCloseDisabled 변수에 대한 선언문은 모든 프로 시저의 외부에 있으며 이는 범위가 전역 적이며 모든 프로 시저 내에서 액세스 가능함을 의미합니다.
다음으로 AutoClose 매크로를 수정하여 본문이 If 문에 포함되도록 다음과 같이 수정합니다.
Sub AutoClose() 'variable declarations here If Not AutoCloseDisabled then 'body of AutoClose here End if End Sub
아이디어는 두 번째 통합 문서가 정상적으로 열리면 AutoCloseDisabled 변수가 자동으로 False로 설정된다는 것입니다. (부울 변수는 선언 된 경우 기본값이 False입니다.) DisableAutoClose 프로시 저는 통합 문서에서 실행되지 않으므로 AutoClose 매크로의 If 문을 사용하면 매크로의 실제 본문을 실행할 수 있습니다.
첫 번째 통합 문서에서 두 번째 통합 문서를 열면 첫 번째 통합 문서의 코드가 두 번째 통합 문서의 DisableAutoClose 매크로를 호출하여 AutoCloseDisabled 플래그를 True로 설정할 수 있습니다. 즉, 두 번째 통합 문서가 닫히면 If 문이 AutoClose 매크로 본문을 건너 뜁니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (3158)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excelribbon-Opening_a_Workbook_but_Disabling_Macros [통합 문서를 열지 만 매크로 비활성화]
.