컴퓨터 공부/엑셀 & VBA

[엑셀vba] 함수나 프로시저에 선택적 인수를 받게 해보자.

도 박사 2021. 8. 26. 00:45
반응형

전달자 또는 파라미터라 부르는 놈을 우리는 잘 알고 있으며 잘 사용하기도 한다.

vba에서 대표적인(?) 파라미터를 들자면 msgbox 함수가 있다.

 

MSGBOX 함수

메세지 박스를 띄우는 함수인데 파라미터가 엄청 많다. 여기서 필수 항목은 맨 앞에 있는 Prompt이다. 메세지 내용을 담당하고 있어서 그런지 필수적으로 들어가야 할 내용인가보다. 그 뒤에 나오는 애들은 있든 없든 메세지 박스 실행에 전혀 영향을 주지 않는다. 그런 필수항목인 프롬프트를 설정하지 않으면 다음과 같은 오류를 볼 수 있을 것이다.

 

선택적 인수가 아님

내가 만들 프로시저나 함수에는 저런 오류메세지가 안뜨도록 선택적 인수로 가득하게 해보자.


선택적 인수를 만들기 위해선 Optional을 붙여주자

Sub Test(X As Integer, Optional Y As Integer)

    Debug.Print X + Y

End Sub
Sub Main()

    Call Test(1)
    
End Sub

 

두 개의 프로시저를 생성했고 TEST 프로시저는 X와 Y를 더한 값을 직접 실행창에 보여준다. 여기서 X는 필수, Y는 선택적 인수로 만들었다. 그리고 Main 프로시저는 Test 프로시저에 인수를 전달하고 호출하는 역할이다.

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있다.


 

반응형