본문 바로가기
#2 엑셀 오류 가이드

엑셀 UDF(사용자 정의 함수)가 #NAME? 오류를 반환할 때 해결

by 이세계의엑셀 2025. 1. 18.
반응형
반응형

엑셀에서 UDF(사용자 정의 함수)는 VBA(Visual Basic for Applications)를 활용해 특정 작업을 수행하도록 정의된 함수입니다. 하지만 함수 사용 시 #NAME? 오류가 발생하면, 엑셀이 해당 함수 이름을 인식하지 못한다는 것을 의미합니다. 이 글에서는 UDF에서 발생하는 #NAME? 오류의 원인, 해결 방법, 예방 팁, 그리고 자주 묻는 질문(FAQ)을 정리했습니다.

 


 

UDF에서 #NAME? 오류가 발생하는 원인

#NAME? 오류는 함수 이름을 인식하지 못할 때 발생하며, 주요 원인은 다음과 같습니다:

원인 설명
1. 함수 이름 오류 함수 이름이 잘못 작성되었거나, 호출 시 이름이 정확하지 않음.
2. 매크로 비활성화 보안 설정에서 VBA 매크로가 비활성화되어 함수가 실행되지 않음.
3. 함수 코드 위치 오류 UDF가 모듈(Module)이 아닌 잘못된 위치(워크시트 코드 등)에 작성됨.
4. VBA 프로젝트에 함수 정의 누락 VBA 편집기에서 함수가 제대로 정의되지 않았거나 저장되지 않음.
5. 함수 호출 시 참조 오류 호출할 때 워크북 또는 워크시트 이름이 잘못되었거나 누락됨.
6. 함수 이름 중복 기본 엑셀 함수나 다른 사용자 정의 함수와 이름이 충돌.

UDF에서 #NAME? 오류 해결 방법

1. 함수 이름 확인 및 수정

함수 이름이 정확하지 않으면 엑셀이 이를 인식하지 못합니다. 함수 이름은 고유해야 하며, 호출 시 동일한 이름을 사용해야 합니다.

해결 방법:

  1. VBA 편집기 열기:
    • Alt + F11을 눌러 VBA 편집기를 엽니다.
  2. 함수 이름이 올바르게 작성되었는지 확인합니다:
    • 함수는 반드시 Function으로 시작해야 하며, 이름에 공백이나 특수 문자가 없어야 합니다.
  3. 예제 코드:
    Function AddNumbers(a As Double, b As Double) As Double
        AddNumbers = a + b
    End Function
  4. 셀에서 호출할 때:
    =AddNumbers(10, 20)

 

2. 매크로 활성화

엑셀에서 매크로가 비활성화되었을 경우, 사용자 정의 함수가 실행되지 않습니다.

해결 방법:

  1. 파일 > 옵션 > 보안 센터 > 보안 센터 설정으로 이동합니다.
  2. 매크로 설정에서 "모든 매크로를 활성화"를 선택합니다.
  3. 설정을 저장한 뒤 파일을 다시 엽니다.

참고:

보안 위험이 있는 파일은 신뢰할 수 있는 위치에 저장하여 사용하는 것이 좋습니다.


3. 함수 코드 위치 수정

UDF는 반드시 모듈(Module)에 작성되어야 합니다. 워크시트 코드나 ThisWorkbook에 작성된 함수는 호출되지 않습니다.

해결 방법:

  1. VBA 편집기에서 모듈 확인:
    • 삽입 > 모듈(Module)을 클릭하여 새 모듈을 생성합니다.
  2. 기존 함수 코드를 모듈로 이동합니다.
  3. 저장한 뒤 셀에서 다시 호출합니다.

4. VBA 프로젝트 저장

UDF가 VBA 프로젝트에 저장되지 않았다면, 함수가 호출되지 않습니다.

해결 방법:

  1. VBA 편집기에서 코드를 작성한 뒤 반드시 저장합니다:
    • Ctrl + S를 눌러 저장.
  2. Alt + F11로 편집기를 닫고 엑셀로 돌아옵니다.
  3. 셀에서 UDF를 호출하여 오류가 해결되었는지 확인합니다.

 

5. 함수 호출 방식 점검

UDF를 다른 워크북에서 호출하거나 참조 오류가 발생할 경우, 정확한 경로를 지정해야 합니다.

해결 방법:

  1. 다른 워크북의 UDF를 호출하려면 워크북 이름을 포함합니다: 
  2.  
  3. =WorkbookName.xlsm!FunctionName(10, 20)
  4. 함수가 작성된 워크북이 열려 있는지 확인합니다.

6. 함수 이름 중복 해결

기본 함수 이름과 UDF 이름이 중복되면 #NAME? 오류가 발생할 수 있습니다.

해결 방법:

  1. VBA 편집기에서 UDF 이름을 고유한 이름으로 변경합니다.
    • 예: CustomAddNumbers.
  2. 호출 시 혼동되지 않도록 명확히 작성합니다:
    =CustomAddNumbers(10, 20)

UDF 사용 시 예방 팁

설명
1. 함수 이름 고유성 유지 기본 함수나 다른 사용자 정의 함수와 이름 충돌을 피하세요.
2. 매크로 활성화 유지 보안 센터에서 매크로 설정을 활성화로 유지하세요.
3. 함수 코드 위치 정리 모든 UDF 코드는 모듈(Module)에 작성하세요.
4. 파일 형식 점검 매크로 지원 형식인 .xlsm으로 저장해야 UDF를 사용할 수 있습니다.

UDF 관련 FAQ

Q1. #NAME? 오류가 계속 뜹니다. 무엇이 문제인가요?
A: 함수 이름 오류, 매크로 비활성화, 잘못된 코드 위치 등이 원인일 가능성이 높습니다. 함수 이름과 코드 위치를 점검하고 매크로 설정을 확인하세요.

Q2. 다른 워크북의 UDF를 호출할 수 있나요?
A: 네, 워크북 이름을 포함하여 호출하면 사용할 수 있습니다.
예: =WorkbookName.xlsm!FunctionName(10, 20).

Q3. UDF 호출 시 참조 오류가 발생합니다. 어떻게 해결하나요?
A: 워크북 이름과 함수 이름을 정확히 지정하고, 해당 워크북이 열려 있는지 확인하세요.

Q4. VBA 프로젝트에 오류가 있는데 해결 방법은 무엇인가요?
A: 도구 > 참조(References) 메뉴에서 불필요한 참조를 해제하고, 필요한 참조를 추가하세요.

반응형