본문 바로가기
Excel/VBA 공부

얼렁뚱땅 엑셀 VBA] Function 프로시저

by excelnote2 2017. 5. 23.




Function 프로시저



Function 프로시저는 사용자 정의 함수라고 할 수 있다. 

Sub 프로시저와 달리 매개변수를 인수로 받을 수 있고 결과값을 반환한다. 

(매개변수 - 프로시저를 호출할 때 해당 프로시저에게 전달하는 값)



기본 구문은 아래와 같다. 




Function 함수명 (매개변수1 As 변수형식, 매개변수 2 As 변수형식....)_

 As 결과값_데이터형식


'실행명령


함수명 = 결과값


End Function







매개변수의 생략 : Optional 키워드



- 만약 생략할 수 있는 매개변수가 있을 경우 매개변수 앞에 Optional 키워드를 넣는다. 

- Optional 키워드는 맨 마지막 매개변수에만 사용할 수 있다. 

  (Optional 매개변수가 2개 이상이라면 맨 뒤 쪽으로 붙여서 사용한다. 

- Optional 매개변수가 생략되었을 때의 기본값을 지정해 줄 수 있다.



Function 함수명 (매개변수1 As 변수형식, Optional 매개변수 2 As 변수형식 = 기본값)_

 As 결과값_데이터형식





1
2
3
4
5
6
7
8
9
10
Function plus(a As Integer, Optional b As Integer = 100As Integer
 
Dim c As Integer
 
= a + b
 
plus = c
 
End Function
 
cs








전달될 인수의 갯수가 미정일 때


sum함수의 경우 인수로 전달된 모든 값의 합을 반환하는데 인수가 몇개가 될지는 알 수 없다. 

이처럼 Function 프로시저에 전달할 인수의 갯수가 미정일 때 동적배열을 매개변수로 지정한다.




Function 함수명 (ParamArray 변수() As Variant) As 결과값_데이터형식


Dim 요소 As Variant


For Each 요소 In 변수


' 함수 명령문


Next


함수명 = 결과값


End Function




1
2
3
4
5
6
7
8
9
10
11
Function plus2(ParamArray ar() As Variant) As Integer
 
Dim d As Variant
 
For Each d In ar
    plus2 = plus2 + d
Next
 
 
 
End Function
cs








Function 프로시저 호출(사용)



이렇게 정의된 Function 프로시저는 엑셀에서 다른 함수(sum, if 등등)처럼 사용될 수 있고(사용자 정의 함수)

Sub 프로시저의 일부로 사용될 수도 있다. 


사용자 정의 함수로 사용될 때는 엑셀에서 다른 함수들처럼 사용하고


=Function함수명(매개변수, 매개변수..)


다른 프로시저에서 호출할 때는 :(콜론)과 =(등호)를 사용해서 매개변수를 전달한다. 


함수명(매개변수이름:= 값, 매개변수이름:=값)





댓글