티스토리 뷰


프로그래밍을 하다보면 특정 동작을 수행하는 알고리즘을 짜야하는 경우가 많습니다. 

이러한 알고리즘이 하나의 Main코드에 넣게되면 Main코드가 너무 방대해줘서 코드에 대한 가독성이 떨어지는 문제점을 가지게됩니다.


코딩을 할 때 중요한 포인트중 하나가 가독성인데,

가독성이 높은 코드는 다른사람이 코드를 분석을 할 때 용이하기 때문에 개발에 대한 비용을 줄여주는 이점을 지니게 되죠.


가독성을 높이는 방법중 하나는 특정 알고리즘을 모듈화하는 것입니다. 

모듈화를 할 때 대표적으로 사용되는 것이 바로 함수입니다.


함수는 소프트웨어 개발시 (반복되는) 특정 알고리즘을 하나의 함수에 넣어서 그 함수를 반복적으로 재호출하게 사용을 하게 됩니다.

함수를 잘 활용하면 가독성이 높아질 뿐아니라, 코드의 양도 줄이고, 향후 유지보수에도 용이하다는 장점을 가지고 있습니다. 


그럼 VBA에서 함수는 무엇일까요? VBA에서는 이러한 함수를 프로시저(Procedure)라 이야기합니다. 


VBA에서는 함수(프로시저)를 Sub 프로시저와 Function 프로시저로 구분을 합니다. 

Sub 프로시저와 Function 프로시저는 동일하게 함수로 사용이 되지만, 가장 큰 차이점은 반환값이 없느냐 있느냐에 차이입니다. 


  • Sub 프로시저 : 특정한 동작을 수행한다.
  • Function 프로시저 : 특정한 계산을 수행하고 수행에 대한 결과값을 반환한다. 


이 글에서는 Sub 프로시저에 대해서 간략히 알아보도록 하겠습니다. 

이전의 포스팅에서 Sub 프로시저를 이용하여 간단히 HelloWorld를 출력하는 MsgBox를 한번 열어보았습니다. 



VBA에서 사용하는 대부분의 프로시저는 Sub 프로시저 형태를 사용합니다. 매크로의 Recording 기능을 이용하여 작성된 프로시저도 모두 Sub 프로시저입니다. 

일반적으로 반환값이 필요없는 함수는 Function 프로시저로 만들 필요가 없기 때문에, Sub 프로시저를 이용하면 됩니다. 


Sub 프로시저의 구성은 아래와 같습니다.


Sub 프로시저이름(매개 변수)


명령구문

Exit Sub


End Sub


여기서 모르는 용어가 나왔네요. 매개변수란 무엇일까요?  위키백과에 나와있는 설명을 한번 참조해보도록 하겠습니다. 


매개변수란?

컴퓨터 프로그래밍에서 매개변수(영어: parameter →파라미터)란 변수의 특별한 한 종류로서, 함수 등과 같은 Sub 프로시저(혹은 Function 프로시저)의 인풋으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다. 여기서 서브루틴의 인풋으로 제공되는 여러 데이터들을 전달인자(argument) 라고 부른다. 보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될 때 마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.


참고 : 위키피디아(https://ko.wikipedia.org/wiki/매개변수_(컴퓨터_프로그래밍))


위의 설명을 정리하자면, 매개변수는 함수에 특정한 값을 전달하는 값이라고 보면 되겠네요.

자 그럼 테스트를 위해서 매개변수 있는 Sub 프로시저와 매개변수 없는 Sub 프로시저를 한번 만들어보겠습니다. 


엑셀에서 Alt + F11을 눌러 VBE를 연뒤에, 모듈을 추가하여 아래와 같이 코드를 짭니다. 모듈 추가방법에 대해서 알고싶으시면 아래의 링크를 참조하세요. 


관련 코드 

'매개변수 있는 함수

Sub ShowMsgBox(name As String)

    MsgBox name

End Sub


' 매개변수 없는 함수

Sub InsertName()

    Call ShowMsgBox("엑셀유저")

End Sub



코드에서는 2개의 Sub 프로시저를 만들었습니다. 하나는 MsgBox를 보여주는 ShowMsgBox이고, 다른 하나는 ShowMsgBox를 호출하는 InsertName 함수입니다. 



InsertName 함수가 실행이 되면, ShowMsgBox를 호출하게됩니다. InsertName 함수는 내부의 Call ShowMsgBox("엑셀유저")를 통해서 ShowMsgBox 함수를 호출 시킵니다. ShowMsgBox를 호출할 때 엑셀유저라는 문자열 값을 ShowMsgBox에 전달하게 되고, 이 함수는 이 값을 받아와서 이 값에 대한 실질적인 메시지 창을 보여주게됩니다. 


다른 값을 보고 싶다면 엑셀유저를 원하는 값으로 변경하시면 됩니다. 


이 글에서는 간단히 Sub 프로시저에 대해서 알아보았습니다.


이 글이 도움이 되셨으면, 아래의 하트를 눌러주세요.


댓글