매크로를 실행하는 동안 Excel이 응답하지 않음 (Microsoft Excel)
Dave는 For … Next 루프에서 많은 정보를 처리해야하는 매크로를 작성할 때 항상 상태 표시 줄을 사용하여 진행률을 표시합니다.
일반적으로 “Y의 X 행 처리 중”과 같은 메시지가 표시됩니다. “Y”가 큰 값 (For … Next 루프의 맨 위 끝)이면 Excel은 종종 상태 표시 줄 업데이트를 중지하고 Excel의 제목 표시 줄에 “응답 없음”과 같은 내용을 표시합니다. 매크로는 여전히 실행 중이며 완료되면 Excel이 응답을 시작하고 모든 것이 정상적으로 작동합니다. Dave는 Excel이 이러한 방식으로 작동을 중지하고 대신 원하는대로 상태 표시 줄 업데이트를 표시하는 방법을 궁금해합니다.
이 문제는 Excel이 응답을 중지 한 것으로 Windows에 나타날 때 발생하는 것 같습니다. (결국 프로그램의 제목 표시 줄에 나타나는 것은 Windows가 담당합니다.) Windows에서 여러 프로그램을 열어 놓고 Excel이 청킹하는 동안 다른 프로그램 창을 클릭하면 동작을 매우 쉽게 재현 할 수있었습니다. 긴 매크로. 기본적으로 Excel이 매크로를 수행 중이거나 Windows에 상태 표시 줄 업데이트를 요청하는 것을 계속할 수없는 경우 실제로 Excel이 응답을 멈춘 것처럼 보입니다.
사용할 수있는 두 가지 방법이 있습니다. 첫째, 루프 내에서 DoEvents 명령을 사용할 수 있습니다. 일반적으로 이것은 누군가가 키보드를 눌렀을 때와 같이 이벤트 큐에있는 모든 것에주의를 기울 이도록 매크로를 지시하는 데 사용됩니다. 이는 Excel이 작동중인 매크로에서 “조회”하고 Windows와 통신하도록하는 것과 같습니다. 이것은 필연적으로 Windows에 Excel이 실제로 반응한다는 것을 알리고 상태 표시 줄에 대한 업데이트가 발생하도록 허용합니다.
상태 표시 줄을 업데이트 한 직후에 명령을 입력 할 수도 있습니다.
Application.StatusBar = "Processing row " & X & " of " & Y DoEvents
또 다른 시도는 상태 표시 줄을 많이 업데이트하지 않는 것입니다.
루프의 상단이 매우 큰 경우 백분율을 계산하고 전체의 일부가 완료되었을 때 상태 표시 줄을 업데이트하는 것이 좋습니다 (아마도 전체의 5 % 또는 10 %마다). 이것은 상태 표시 줄을 수백 또는 수천 번이 아니라 루프 동안 10 번 또는 20 번만 업데이트하면됨을 의미합니다. 이는 Windows가 상태 표시 줄 업데이트 요청을 처리 할 수 있음을 의미 할 수 있으며, 보너스로 상태 표시 줄을 자주 업데이트 할 필요가 없기 때문에 매크로가 더 빠르게 실행될 수 있습니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (13341)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.