엑셀 VBA 함수 결과 새로 고침: 완벽 가이드

엑셀을 사용할 때 많은 사용자들이 특수한 계산을 수행하기 위해 *사용자 정의 함수(User-Defined Functions, UDFs)*의 힘에 의존합니다. 그러나 스프레드시트의 관련 데이터를 변경한 후 UDF가 자동으로 재평가되지 않는다는 일반적인 문제를 겪을 수 있습니다. 복잡한 함수를 만드는 데 시간을 투자했다면, 이는 특히 실망스러울 수 있습니다.

이번 포스트에서는 엑셀 VBA 함수가 주변 데이터가 변경될 때마다 자동으로 새로 고쳐지도록 하는 방법을 살펴보겠습니다.

문제 이해하기

데이터를 변경한 후 F9 또는 Shift + F9를 눌러도 사용자 정의 함수가 생성한 결과가 업데이트되지 않는 것을 느꼈을 수 있습니다. 유일한 workaround는 함수를 포함하고 있는 셀을 수동으로 편집한 후 Enter를 누르는 것으로, 이는 작업 흐름을 간소화하기에는 이상적이지 않습니다.

내 UDF가 자동으로 새로 고침되지 않는 이유는 무엇인가요?

엑셀의 사용자 정의 함수는 기본적으로 자동으로 재평가되지 않으며, 그렇게 설정되지 않는 한 재평가되지 않습니다. 이 제한으로 인해 데이터가 변경되더라도 UDF는 재계산 명령을 받기 전까지는 구식 결과를 반환할 수 있습니다.

해결책: UDF를 휘발성 함수로 만들기

이 문제를 해결하기 위해 사용자 정의 함수를 휘발성(volatile)로 설정할 수 있습니다. 함수가 휘발성으로 설정되면 엑셀에서 재계산할 때마다 재계산되며, 이는 통합 문서 전체의 다른 셀에서 변경 사항이 포함됩니다.

Application.Volatile 구현하기

다음은 UDF를 수정하여 Application.Volatile 메서드를 포함하는 간단한 단계별 프로세스입니다.

  1. VBA 편집기 열기: ALT + F11을 눌러 엑셀에서 VBA 편집기를 엽니다.

  2. 함수 찾기: 프로젝트에서 관련 함수를 찾습니다. 예를 들어, 숫자를 두 배로 만드는 함수가 있다면 VBA 모듈에서 이를 찾습니다.

  3. Application.Volatile 삽입: 함수의 시작 부분에 Application.Volatile라는 줄을 추가합니다.

    수정 후 함수의 간단한 예는 다음과 같습니다:

    Function doubleMe(d)
        Application.Volatile
        doubleMe = d * 2
    End Function
    

코드 설명

  • Application.Volatile 문장은 함수를 휘발성으로 표시합니다.
  • 이는 Excel이 재계산할 때 마다 함수를 실행하게 합니다(다른 셀들이 변경될 때).
  • 그 결과, 출력은 항상 데이터의 가장 최신 상태를 반영하게 됩니다.

엑셀에서 자동 계산 설정하기

휘발성 함수가 효과적으로 작동하도록 하려면 엑셀 설정이 자동 계산으로 구성되어 있는지 확인하십시오:

  1. 수식 탭으로 가기: 리본의 “수식” 탭을 클릭합니다.
  2. 계산 옵션 선택: 계산 그룹에서 “자동"이 선택되어 있는지 확인합니다.

이러한 설정으로, UDF는 변경에 따라 자동으로 업데이트되어 엑셀 사용 경험을 더 효율적이고 오류 없이 만들어줍니다.

결론

이번 가이드에서는 사용자 정의 함수가 예상대로 새로 고쳐지지 않는 엑셀 사용자들이 겪는 일반적인 문제를 다뤘습니다. Application.Volatile을 활용함으로써 계산을 간소화하고 통합 문서가 수동 개입 없이 업데이트되도록 할 수 있습니다.

VBA 함수의 모든 이점을 누리기 위해 설정을 항상 확인해 두세요. 즐거운 계산 되세요!