programing

VBA에서 "종료"와 "종료 서브"의 차이점은 무엇입니까?

mailnote 2023. 4. 21. 21:10
반응형

VBA에서 "종료"와 "종료 서브"의 차이점은 무엇입니까?

VBA에서는 어떤 조건이 충족된 후에 프로그램을 종료하고 싶은 경우가 있습니다.하지만 나는 사용합니까?end또는exit sub?

이는 질문의 범위를 조금 벗어나지만 VBA를 처음 접하는 독자들에게 혼란을 주지 않도록 하기 위해 다음과 같이 하십시오.End그리고.End Sub같지 않다.그들은 같은 일을 하지 않는다.

End모든 코드 실행을 중지합니다.그리고 거의 항상Exit Sub(또는Exit Function(각각).

종료하면 모든 제외가 중지됩니다.이것은 매력적으로 들리지만 모든 글로벌 변수와 정적 변수도 지웁니다.(소스)

End 스테이트먼트에 대해서는, 「MSDN dox」도 참조해 주세요.

실행 시Endstatement는 all module-level 변수와 all module의 모든 스태틱로컬 변수를 리셋합니다.이러한 변수의 값을 유지하려면Stop대신 스테이트먼트를 입력합니다.그런 다음 변수 값을 유지하면서 실행을 재개할 수 있습니다.

주의:End문은 Unload, QueryUnload 또는 Terminate 이벤트 또는 기타 Visual Basic 코드를 호출하지 않고 코드 실행을 갑자기 중지합니다.폼 및 클래스 모듈의 Unload, QueryUnload 및 Terminate 이벤트에 배치한 코드는 실행되지 않습니다.클래스 모듈에서 생성된 객체가 파괴되고 Open 문을 사용하여 열린 파일이 닫히고 프로그램에서 사용된 메모리가 해방됩니다.다른 프로그램에서 보유하고 있는 개체 참조는 비활성화됩니다.

이도 아니다End Sub그리고.Exit Sub똑같아요. End Sub같은 방법으로 부를 수 없다Exit Sub컴파일러가 허락하지 않았기 때문에 그럴 수 있습니다.

여기에 이미지 설명 입력

다시 한 번 말하지만Exit Sub이는 완전히 합법적인 작업입니다.

서브종료
표시되는 Sub 프로시저를 즉시 종료합니다.Sub 프로시저를 호출한 스테이트먼트에 이은 스테이트먼트로 실행이 속행됩니다.Sub 종료는 Sub 절차 내에서만 사용할 수 있습니다.

게다가, 그리고 일단 수술의 원리를 알게 되면, 분명히End Sub는 글로벌 변수를 클리어하지 않습니다.그러나 로컬(Dim'd) 변수는 지워집니다.

종료 서브
순서의 정의를 종료합니다.

언급URL : https://stackoverflow.com/questions/36491908/whats-the-difference-between-end-and-exit-sub-in-vba

반응형