글목록

2021년 4월 3일

Function과 Sub 차이

VBA에는 Function과 Sub로 시작하는 프로시저가 있습니다.

프로시저는 1개 단위의 실행문이라고 보시면 됩니다만 약간의 차이가 있습니다.

Function은 '함수'를 의미하며, 쉽게 말해 어떤 값이나 조건을 입력받으면, 입력받은 값에 따라 결과물을 출력해주는 것을 의미하고, Sub는 결과물을 출력하지 않고 실행하는 것을 말합니다.

물론 약간의 꼼수를 사용하면 Sub를 Function처럼 사용할 수도 있고, Function을 숨겨진 Sub로 사용할 수 있습니다.

또한, Function을 모듈에 작성하더라도 엑셀, 워드, 파워포인트 등의 '매크로 실행' 창에 나타나지 않습니다. 또한 Sub도 입력 변수를 지정해두면 '매크로 실행' 창의 목록에 나타나지 않습니다.

즉, '매크로 실행'의 매크로 목록에 나타나게 하기 위해서는 입력값이 없는 'Sub'로 작성되어야 합니다.

아래의 5가지 프로시저를 비교해보도록 하겠습니다.

Sub Test1()
  MsgBox "Test1"
End Sub

Test1은 입력값이 없는 Sub입니다. 실행하면, "Test1"이라는 메세지가 출력되며, 매크로 목록에 나타납니다.


Sub Test2(iStr As String)
  MsgBox iStr
End Sub

Test2는 iStr이라는 문자열을 입력받아 입력받은 문자열을 출력하며, 매크로 목록에는 나타나지 않습니다.


Function Test3()
  MsgBox "Test3"
End Function

Test3는 Test1과 비슷한 기능을 하지만 매크로 목록에는 나타나지 않습니다.


Function Test4(iStr)
  MsgBox "Test4"
End Function

Test4는 Test2와 동일합니다.


Function Test5(iStr As String) As String
  Test5 = "출력 : " & iStr
End Function

Test5는 iStr 문자열을 입력받아서 문자열 앞에 '출력 : ' 이라는 문자열을 붙여서 반환합니다. 다만, 메세지박스를 만들지는 않으며, 입력받은 값을 가공하고 그 결과를 내보내기만 합니다.

모듈에 위의 5개 매크로를 만든 후, 매크로 실행 창을 열어보면 아래와 같이 Test1만 나타나는 것을 알 수 있습니다.



Sub와 Function의 차이를 약간이나마 이해하셨다면 본격적인 함수(Function)을 작성하도록 하겠습니다.




댓글 없음:

댓글 쓰기

의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~

많이 본 글 :