컴알못/VBA

[VBA] 사용자 정의 함수 만들기 / Add-in으로 추가하기

난프로 2023. 8. 14. 12:46

#VBA #사용자정의함수 #Add-in추가

 

많은 엑셀 사용자들은 내장 함수만으로는 원하는 결과를 얻기 어려울 때가 있습니다. 이럴 때 사용자 정의 함수(User-Defined Function, UDF)을 만들어서 필요한 작업을 수행할 수 있습니다. 이번 글에서는 엑셀 VBA를 사용하여 사용자 정의 함수를 만드는 방법과 이를 Add-in으로 추가하는 방법을 알아보겠습니다.

1. VBA 코드

사용자 정의 함수를 만들려면 VBA 코드 에디터를 사용해야 합니다. 아래는 원통의 부피를 계산하는 사용자 정의 함수의 코드 예시입니다.

1
2
3
4
5
6
7
Function CylVol(r As Double, h As Double) As Double
 
Dim pi As Double
pi = 4 * Atn(1)
CylVol = pi * r ^ 2 * h
 
End Function
cs

 

2. 코드 해석

1.  Function CylVol(r As Double, h As Double) As Double

  • 사용자 정의 함수 CylVol을 정의.
  • CylVol은 함수의 이름. 엑셀 워크시트에서 이 이름을 사용하여 함수를 호출.
  • (r As Double, h As Double)는 함수에 전달되는 매개변수. 여기서 r은 반지름, h는 높이입니다.
  • 각 매개변수와 사용자 정의 함수의 타입을 여기서 명시해야함

2. Dim pi As Double

  • 사용자 정의 함수 CylVol을 계산하기 위한 변수 pi를 선언
  • 해당 변수는 사용자 정의 함수의 매개변수가 아니므로 프로시저 내에서 선언함

3. pi = 4 * Atn(1)

  • 아크탄젠트 함수 'Atn'을 사용하여 원주율을 근사적으로 계산

4. CylVol = pi * r ^ 2 * h

  • 원통의 부피를 계산하는 수식을 이용하여 함수가 반환할 값을 계산하고 변수 CylVol에 할당

3. 엑셀 내 사용

위 코드를 작성하면 아래와 같이 엑셀 내에서 내장함수처럼 사용 가능합니다.

 

4. 사용자 정의 함수 Add-in으로 추가하기

위의 방법은 특정 엑셀 파일에서만 사용자 정의 함수를 이용할 수 있습니다. 하지만 함수를 여러 엑셀 파일에서 공통적으로 사용하고 싶다면, 함수를 Add-in으로 저장하는 방법을 사용할 수 있습니다.

 

1. VBA 코드 에디터에서 모듈 작성: 위와 같이 함수 코드를 작성한 후 모듈에 저장합니다.
2. Add-in으로 저장: 엑셀메뉴 "파일" > "다른 이름으로 저장" 을 선택하고 파일 형식을 "Excel 추가 기능"으로 변경한 후 저장합니다. (참고로 엑셀의 Add-in 기본 경로는 C:\Users\사용자이름\AppData\Roaming\Microsoft\AddIns)

3. Excel 옵션에서 추가 기능 추가: 엑셀메뉴 "파일" > "옵션" > "추가 기능" > "관리" 옆의 이동을 클릭 후, 방금 저장한 Add-in 파일을 추가하면 됩니다.