매크로 중단 및 제어 유지 (Microsoft Excel)
다른 사용자가 사용할 매크로를 개발할 때 사용자가 매크로가 끝나기 전에 종료하고 매크로가 수행하는 작업을 계속 제어 할 수있는 메서드를 추가 할 수 있습니다. Ctrl + Break는 매크로를 중지하지만 사용자가 VBA 편집기에서 코드를 볼 수 있도록 허용하므로 정상적으로 종료되지는 않습니다.
이 문제에 접근 할 수있는 몇 가지 방법이 있습니다. 첫 번째는 매크로에 “종료 하시겠습니까?”프롬프트를 작성한 다음 매크로가 주기적으로 프롬프트를 표시하도록하는 것입니다. 예를 들어, 다음 코드를 고려하십시오.
Do ... ' your code goes here Counter = Counter + 1 If Counter Mod 25 = 0 Then If MsgBox("Stop Macro?", vbYesNo) = vbYes Then End End If Loop
매크로 구성은 Do … Loop 구조를 사용하여 반복해서 반복하려는 일련의 단계가 있다는 전제를 기반으로합니다. 루프를 통과 할 때마다 Counter의 값이 증가합니다. 루프를 통해 25 회마다 “중지 매크로?” 프롬프트가 표시되고 사용자가 종료 할 수 있습니다.
이 접근 방식은 구현하기 쉬우 며 일부 목적에 적합 할 수 있습니다. 그러나이 접근 방식의 가장 큰 단점은 즉각 성을 허용하지 않는다는 것입니다. 사용자는 최소 25 번의 반복이 발생할 때까지 매크로를 종료 할 때까지 기다려야합니다.
또 다른 방법은 VBA 코드를 “숨기고”암호를 적용하는 것입니다.
VBA 편집기 내에서 다음 단계를 수행하면됩니다.
-
도구 메뉴에서 VBAProject 속성 옵션을 선택하십시오. 편집기는 프로젝트 속성 대화 상자를 표시합니다.
-
보호 탭이 표시되는지 확인합니다. (그림 1 참조)
-
보기를 위해 프로젝트 잠금 확인란을 선택합니다.
-
암호 상자에 매크로를 보호하는 데 사용할 암호를 입력합니다.
-
암호 확인 상자에 동일한 암호를 두 번 입력합니다.
-
확인을 클릭하십시오.
VBA 편집기를 닫은 다음 통합 문서를 저장하십시오. VBA 프로젝트가 보호 된 상태에서 사용자는 여전히 Ctrl + Break를 클릭하여 매크로를 중지 할 수 있지만 실제 프로그램 코드를 얻을 수는 없습니다. 그들은 코드를 보호하는 계속 또는 종료 버튼에서만 선택할 수 있습니다. 추가 이점으로이 접근 방식은 사용자가 메뉴, 도구 모음 또는 리본 선택 항목을 사용하여 코드를 볼 수 없도록 제한합니다.
그러나 가장 좋은 방법은 사용자가 Esc 또는 Ctrl + Break를 누를 때마다 기본적으로 담당하는 오류 처리기를 만드는 것입니다. 실행되는 처리기는 사용자에게 정말로 종료 할 것인지 묻고 종료 할 경우 정상적으로 종료 할 수 있습니다. 이 작업이 수행되는 방법을 보여주는 몇 가지 예제 코드는 다음과 같습니다.
Sub Looptest() Application.EnableCancelKey = xlErrorHandler On Error GoTo ErrHandler Dim x As Long Dim y As Long Dim lContinue As Long y = 100000000 For x = 1 To y Step 1 Next Application.EnableCancelKey = xlInterrupt Exit Sub ErrHandler: If Err.Number = 18 Then lContinue = MsgBox(prompt:=Format(x / y, "0.0%") & _ " complete" & vbCrLf & _ "Do you want to Continue (YES)?" & vbCrLf & _ "Do you want to QUIT? [Click NO]", _ Buttons:=vbYesNo) If lContinue = vbYes Then Resume Else Application.EnableCancelKey = xlInterrupt MsgBox ("Program ended at your request") Exit Sub End If End If Application.EnableCancelKey = xlInterrupt End Sub
이 예제에서는 EnableCancelKey 메서드를 사용하여 취소 키 (Esc 또는 Ctrl + Break)를 누를 때 이동해야하는 레이블의 이름을 할당합니다. 이 경우 ErrHandler가 점프되고 사용자에게 무엇을해야하는지 묻습니다. 사용자가 종료를 선택하면 매크로가 정상적으로 종료됩니다.
ErrHandler 레이블 이후에 수행되는 첫 번째 작업은 Err 개체의 Number 속성이 18과 같은지 확인하는 것입니다.이 경우 취소 키를 눌렀 음을 알 수 있습니다. 그렇지 않은 경우 다른 유형의 오류가 발생한 것이므로 매크로에 적합한 방식으로 처리해야합니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (3021)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.
link : / excelribbon-Aborting_a_Macro_and_Retaining_Control [매크로 중단 및 제어 유지]
.