VBA – 자동 계산 끄기(또는 켜기)
셀 값을 업데이트할 때마다 Excel은 통합 문서를 다시 계산하는 프로세스를 거칩니다. Excel 내에서 직접 작업할 때는 99.9%의 경우 이 프로세스가 수행되기를 원합니다(매우 큰 통합 문서로 작업하는 경우는 예외). 하지만 이렇게 하면 VBA 코드의 속도가 매우 느려질 수 있습니다. 매크로를 시작할 때 계산을 수동으로 설정하고 매크로가 끝날 때 자동 계산 설정을 복원하는 것이 좋습니다. 통합 문서를 다시 계산해야 하는 경우 Excel에 수동으로 계산하도록 지시할 수 있습니다.
자동 계산 끄기
매크로를 xlmanual로 설정하여 매크로의 자동 계산을 끌 수 있습니다. 다음 VBA 코드를 사용하면 됩니다:
Application.Calculation = xlManual
자동 계산 다시 켜기
자동 계산을 다시 켜려면 xlAutomatic으로 설정합니다:
Application.Calculation = xlAutomatic
프로시저의 맨 처음에 자동 계산을 비활성화하고 마지막에 자동 계산을 다시 활성화하는 것이 좋습니다. 다음과 같이 표시됩니다:
자동 계산 비활성화 매크로 예제
Sub Auto_Calcs_Example()
Application.Calculation = xlManual
'실행할 코드
Application.Calculation = xlAutomatic
End Sub
수동 계산
자동 계산이 비활성화되어 있는 경우 Calculate 명령을 사용하여 Excel이 강제로 다시 계산하도록 할 수 있습니다:
Calculate
개별 워크시트만 다시 계산하도록 Excel에 지시할 수도 있습니다:
Worksheets("sheet1").Calculate
VBA에 범위만 다시 계산하도록 지시할 수도 있습니다(VBA 계산 방법에 대한 문서를 읽으려면 클릭하세요).
코드는 다음과 같습니다:
Sub Auto_Calcs_Example_Manual_Calc()
Application.Calculation = xlManual
'실행할 코드
'수동 계산
Calculate
'더 실행할 코드
Application.Calculation = xlAutomatic
End Sub
VBA 설정 – 코드 속도 향상하기
코드 속도를 높이는 것이 목표라면 다음과 같은 다른 설정도 조정하는 것을 고려해야 합니다:
화면 업데이트를 비활성화하면 속도에 큰 차이를 만들 수 있습니다:
Application.ScreenUpdating = False
상태 표시줄을 끄는 것도 차이를 만들 수 있습니다:
Application.DisplayStatusBar = False
통합 문서에 이벤트가 포함된 경우 프로시저를 시작할 때 이벤트를 비활성화해야 합니다(코드 속도를 높이고 무한 루프를 방지하기 위해서):
Application.EnableEvents = False
마지막으로, Excel에서 페이지 나누기 기능을 다시 계산하려고 할 때 VBA 코드의 속도가 느려질 수 있습니다(참고: 모든 프로시저가 영향을 받는 것은 아님니다). DisplayPageBreaks를 끄려면 다음 코드 줄을 사용하세요:
ActiveSheet.DisplayPageBreaks = False
간편한 VBA 코딩
온라인에서 VBA 코드를 더 이상 검색하지 않아도 됩니다. 초보자도 최소한의 코딩 지식으로 프로시저를 처음부터 코딩할 수 있습니다. 시간 절약이 가능하고 모든 사용자를 위한 VBA 코드 작성기인 AutoMacro에 대해 자세히 알아보세요!