VBA Calculate(자동계산기능) – 통합문서, 워크시트, 범위

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 29, 2023

이 튜토리얼에서는 VBA의 다양한 Calculate 옵션에 대해 설명합니다.

기본적으로 Excel은 통합 문서가 변경될 때마다 열려 있는 모든 통합 문서에서 계산을 수행합니다. A1셀이 변경되면 A1셀에 의존하는 모든 셀을 업데이트하는 식으로 계산을 수행합니다. 하지만 이렇게 하면 셀이 변경될 때마다 Excel에서 다시 계산해야 하므로 VBA 코드가 매우 느리게 실행될 수 있습니다.

VBA 속도를 높이기 위해 절차를 시작할 때 자동 계산을 비활성화해야 하는 경우도 있습니다.

Application.Calculation = xlManual

코드의 끝부분에서 자동계산을 다시 활성화시킵니다:

Application.Calculation = xlAutomatic

통합 문서의 전체(또는 일부)를 계산하려는 경우에는 어떻게 해야 할까요? 이 튜토리얼을 끝까지 학습하시면 방법을 습득하실 수 있습니다.

지금 계산하기

Calculate 명령을 사용하여 모든 통합 문서를 다시 계산할 수 있습니다(열려 있는 모든 통합 문서에서):

Calculate

일반적으로 이 방법을 많이 사용합니다. 속도를 더 향상시키고 싶다면 좁은 범위의 계산을 수행할 수도 있습니다.

시트만 계산하기

특정 시트만 계산하도록 코드를 작성할 수도 있습니다.

아래 코드는 활성 시트에서만 Calculate 명령을 수행합니다:

ActiveSheet.Calculate

아래 코드는 Sheet1에서만 Calculate 명령을 수행합니다:

Sheets("Sheet1").Calculate

범위만 계산하기

더 좁은 범위의 계산이 필요한 경우 셀 범위에서만 Calculate 명령을 수행하도록 코드를 작성할 수 있습니다:

Sheets("Sheet1").Range("a1:a10").Calculate

개별 수식 계산하기

아래 코드는 개별 셀 수식만 계산합니다:

Range("a1").Calculate

통합 문서 계산하기

전체 통합 문서만 계산하는 옵션은 따로 없습니다. 전체 통합 문서를 계산해야 하는 경우 Calculate 명령을 단독으로 사용하면 됩니다:

Calculate

이 명령은 열려 있는 모든 통합 문서에서 Calculate 명령을 수행합니다. 전체 통합 문서에서 Calculate 명령을 수행할 때 속도가 중요시된다면 열려있는 통합문서를 지정해야 합니다.

통합문서 계산하기 – 잘못된 메서드 사용

VBA가 통합 문서 하나만 계산하도록 강제하는 데 사용할 수 있는 몇 가지 방법이 있지만 제대로 작동하지 않습니다.

이 코드는 통합 문서의 각 워크시트를 반복하여 한 번에 한 시트씩 Calculate 명령을 수행합니다:

Sub Recalculate_Workbook()
    Dim ws As Worksheet
    
    For Each ws In Worksheets
        ws.Calculate
    Next ws
End Sub

이 코드는 모든 워크시트가 “독립형”인 경우, 즉 다른 시트를 참조하는 계산이 없는 경우 잘 작동합니다.

그러나 워크시트가 다른 시트를 참조하는 경우 계산이 제대로 업데이트되지 않을 수 있습니다. 예를 들어 Sheet2보다 먼저 Sheet1을 계산할 경우 Sheet1의 수식이 Sheet2에서 수행한 계산에 의존하는 경우 수식에 최신 값이 포함되지 않습니다.

모든 시트를 한 번에 선택하고 활성 시트를 계산해 볼 수도 있습니다:

ThisWorkbook.Sheets.Select
ActiveSheet.Calculate

하지만 이 경우에도 동일한 문제가 발생합니다.

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기