나는 한동안 동료와 이야기를 나누고 있었고 그는 매우 강력한 컴퓨터 시스템에서 실행되는 매크로에서 발생한 문제에 대해 설명했습니다.

매크로는 항상 메모리 부족 오류와 함께 시스템을 중단하고 정지시키는 것처럼 보입니다. 제 동료는 매크로가 백그라운드에서 실행될 수 있다면 그렇게 많은 리소스를 사용하지 않고 충돌하지 않을 것이라고 생각했습니다.

그러나 제안 된 솔루션이 반드시 문제를 해결하는 것은 아니라는 것을 알고있었습니다. 일부 리소스를 확보 할 수 있지만 시스템은 결국 메모리가 부족합니다. 왜? 메모리 부족 문제는 일반적으로 원본 매크로의 코딩 문제로 인해 발생하기 때문입니다.

“메모리 누수”(메모리 부족 상태로 이어짐)는 매크로 코드의 여러 문제로 인해 발생할 수 있습니다.

가장 좋은 해결책은 심야 디버깅, 매크로 코드를 단계별로 실행하고 문제가 발생하는 위치를 분석하는 것입니다. 무한 루프와 같은 가장 명백한 (그러나 쉽게 간과되는) 문제를 먼저 찾습니다. 매크로가 반복적 인 처리 (워크 시트를 반복)를 많이 수행하는 경우 매크로에 대해 선언 한 모든 메모리를 해제해야합니다. 예를 들어, 사용하는 모든 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에 적용됩니다.