이전에 sub 명령어로 것으로 코드를 작성한다고 했었다. 엑셀VBA는 서브(sub) 프로시저와 펑션(function) 프로시저로 나뉜다고 생각해두자. 그리고 아주 편하게 내맘대로 그 차이를 sum 함수처럼 셀에서 다이렉트로 호출할 수 있는지 여부로 생각하면 아주 간단하다.
아래 그림처럼 a열에서 키를, b열에서 몸무게를 값을 받아서, c열에 BMI를 계산하려고 한다. 2번 행에서는 sub 프로시저를 3번 행에서는 function 프로시저를 사용할 예정이다.
작성한 코드는 다음과 같다. BMI를 계산하는 간단한 식이나, 일단 코드 내용은 신경쓰지 말자.
위의 sub 프로시저는 코드창에서 실행하면 활성화된 셀(activecell)에 계산이 되고, 아래 function 프로시저는 sum함수를 입력하 듯, a2와 b2셀을 입력해주면 키, 몸무게 순으로 선택해주면, 활성화된 셀(activecell)에 계산이 될 것이다.
그 말인 즉, function 프로시저는 엑셀의 함수처럼, 값이 변하면 계속 연산을 하는 수식(formula)일테고, sub 프로시저는 다시 코드 실행 명령을 하지 않는 이상 그냥 값일 뿐인 것이다.
각자의 필요에 따라 선택하여 사용하면 되지만, 미리 생각해야하는 것은 해당 코드나 문서를 누가 언제 사용할 것이냐는 것이다. vba코드를 여러명이서 공유해서 사용하기는 쉬운일이 아니다. 매크로를 포함한 문서는 메일에서 차단되기 쉽기 때문에, 개인적으로는 범용성을 가진 add-in 형태로 사용하는 것이 가장 유용한 사용법이 아닐까 한다.
끝.