실행할 큰 매크로 가져 오기 (Microsoft Excel)
나는 한동안 동료와 이야기를 나누고 있었고 그는 매우 강력한 컴퓨터 시스템에서 실행되는 매크로에서 발생한 문제에 대해 설명했습니다.
매크로는 항상 메모리 부족 오류와 함께 시스템을 중단하고 정지시키는 것처럼 보입니다. 제 동료는 매크로가 백그라운드에서 실행될 수 있다면 그렇게 많은 리소스를 사용하지 않고 충돌하지 않을 것이라고 생각했습니다.
그러나 제안 된 솔루션이 반드시 문제를 해결하는 것은 아니라는 것을 알고있었습니다. 일부 리소스를 확보 할 수 있지만 시스템은 결국 메모리가 부족합니다. 왜? 메모리 부족 문제는 일반적으로 원본 매크로의 코딩 문제로 인해 발생하기 때문입니다.
“메모리 누수”(메모리 부족 상태로 이어짐)는 매크로 코드의 여러 문제로 인해 발생할 수 있습니다.
가장 좋은 해결책은 심야 디버깅, 매크로 코드를 단계별로 실행하고 문제가 발생하는 위치를 분석하는 것입니다. 무한 루프와 같은 가장 명백한 (그러나 쉽게 간과되는) 문제를 먼저 찾습니다. 매크로가 반복적 인 처리 (워크 시트를 반복)를 많이 수행하는 경우 매크로에 대해 선언 한 모든 메모리를 해제해야합니다. 예를 들어, 사용하는 모든 SET 문에 대해 개체를 NOTHING으로 설정하는 해당 문이 있어야하며 해당 문은 루프 내에 있어야합니다.
실패하지 않고 매크로를 단계별로 실행할 수 있다면 문제가 스레드의 일종의 타이밍 문제에있을 가능성이 높습니다. 이는 물론 매크로가 완전히 기울어 질 때만 나타나는 타이밍 문제입니다. 그 자체. 이것이 문제라고 의심되는 경우 매크로에서 이벤트의 순서를 다시 지정하면 문제를 해결할 수 있습니다.
매크로가 DDE를 사용하는 경우 Microsoft는 DDE 대신 OLE 자동화 사용을 권장한다는 사실을 알고 있어야합니다. 타이밍 문제는 DDE에서 매우 일반적이며 Microsoft는 이제 더 이상 사용되지 않고 수정하기에는 너무 불안정하다고 생각합니다 (즉, 지원하지 않을 것입니다). VBA에서 서브 루틴을 여러 번 호출하면 메모리 누수가 발생할 수 있으며 이러한 서브 루틴은 사용자 정의 함수로 다시 작성해야합니다.
또한 모든 변수 참조가 완전히 선언되었는지 확인해야합니다. 워크 시트간에 “혼란”되는 매크로 보고서를 보았습니다. Excel에서 포커스를 제거하기 위해 Alt + Tab을 사용하는 경우에도 마찬가지입니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (2579)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.