본문 바로가기

엑셀/VBA

엑셀 VBA - Function 프로시저 인수 지정 없이 사용

반응형

이전 글에서 Function 프로시저에 대해 알아보았습니다. 그리고 Optional을 사용하여 매개변수 값이 생략되어 전달될 때 사용방법에 대해 알아보았습니다. 이번에는 Optional 사용 방법을 예제를 통해 알아보고 또한, 매개변수의 개수를 지정하지 않고 Function 프로시저를 사용하는 방법에 대해서도 알아보겠습니다.

 

엑셀 VBA - Function 프로시저

 

엑셀 VBA - Function 프로시저

이전 글에서 Sub 프로시저에 대해 알아보았습니다. 이번에는 엑셀의 함수와 같은 Function 프로시저에 대해 알아보겠습니다. 엑셀 VBA - Sub 프로시저 엑셀 VBA - Sub 프로시저 엑셀 VBA에서 매크로를 작

mr-johndoe.tistory.com

 

 

 

 

1. 예제를 통해 Optional 사용에 대해 알아보기

 우선 엑셀에서 VBE 창을 열고 Module을 추가합니다. VBE 창 여는 방법과 Module 추가 방법은 다음 링크를 통해 이전 글을 참조하시기 바랍니다.

 

엑셀에서 VBA 프로그램 작성하기

 

엑셀에서 VBA 프로그램 작성하기

엑셀에서 VBA 프로그램을 작성하기 위해서 Visual Basic Editor를 사용합니다. VBA를 알게 되면 엑셀 업무를 하는 데 있어서 보다 빠르고 편하게 업무를 진행할 수 있습니다. 엑셀의 많은 기능이 있지만

mr-johndoe.tistory.com

 

VBA 프로그래밍을 위한 기본 사항 확인하기 I

 

VBA 프로그래밍을 위한 기본 사항 확인하기 I

VBA에 대해 여러 가지 글을 쓰다가 기본 사항들을 집고 넘어가는 것이 좋을 것 같아서 VBA 프로그래밍 기본 사항들을 확인해보고자 합니다. 매크로를 기록해보면 자동으로 입력되는 Sub 프로시저

mr-johndoe.tistory.com

 

 ① 생략되는 매개변수의 값을 지정할 때

 

  Module 창에 다음과 같이 코딩을 합니다.

 

     Function Cross(a As Integer, Optional b As Integer = 2) As Integer

         Cross = a * b
    
     End Function

 

  그리고 엑셀 시트에서 다음과 같이 식을 입력합니다.

 

    =cross(2)

 

  식을 입력하고 엔터를 누르면 4라는 값이 출력됩니다. 이번에는 ' =cross(2,3) '이라고 입력한 후 엔터를 치면 6이라는 값이 출력됩니다. 즉, Optional은 매개변수에 값이 전달될 때에는 전달된 값으로 Function 프로시저를 진행시키고 매개변수가 전달되지 않았을 때는 주어진 초기값으로 Function 프로시저를 진행시킨다는 것을 알 수 있습니다.

 

 ② 생략되는 매개변수의 값을 지정하지 않을 때

  

    Module 창에 다음과 같이 코딩을 합니다.

 

     Function Cross2(a As Integer, Optional b As Variant) As Integer

         If IsMissing(b) = True Then b = 2
    
         Cross2 = a * b
    
     End Function

 

  위와 동일한 결과를 출력하지만 매개변수 값이 전달되었는지를 If 문을 사용하여 확인하고 참일 때 매개변수에 값을 지정하여 실행되도록 Function 프로시저를 코딩하였습니다.

 

  엑셀시트에서 ' =cross2(2) '라고 입력하고 엔터키를 누르면 4가 출력되는 것을 보실 수 있습니다.

 

 

 

 

2. Function 프로시저 인수를 지정하지 않고 사용하기

Function 프로시저의 인수를 지정할 때 수량이 너무 많거나 실제 수량을 알 수 없는 경우 동적 배열 변수를 이용합니다.

 

사용방법은 다음과 같습니다.

 

Function 함수명 (ParamArray 매개변수( ) As Variant) As 데이터 형식

 

               Dim 요소 As Variant

 

               For Each 요소 In 변수

                    실행문

               Next

 

               함수명 = 결괏값

 

 End Function

 

매개변수 앞에 ParamArray를 붙여서 사용하였으며 데이터 형식은 Variant로 선언하였습니다. 

 

예제를 통해 알아보겠습니다.

VBE 창을 열고 Module 코딩 창에 다음과 같이 코딩을 합니다.

 

   Function 합계(ParamArray i() As Variant) As Integer
      Dim 값 As Variant
      Dim 합 As Integer
    
      For Each 값 In i
          합 = 합 + 값
      Next
    
       합계 = 합
   End Function

 

엑셀 시트 임의의 셀에 '=합계(1,2,3,4,5)'를 입력하고 엔터를 누릅니다. 그러면 주어진 인수의 합인 15가 출력되는 것을 보실 수 있습니다.

 

반응형