[엑셀/VBA] WorkDay 함수를 VBA 에서 사용하는 방법
엑셀에서 다들 WorkDay
함수 많이들 이용하시잖아요?
그런데 최근에 알게된 것이, 이 WorkDay
함수가 VBA 에서는 사용할 수 없는 엑셀의 워크시트 함수였더라구요. 잠깐 당황.
하지만 다들 잘 아시다시피 이걸 VBA 에서도 사용하는 방법이 있어서 아래와 같이 정리해봅니다.
WorksheetFuncton 활용
첫 번째 방법은 가장 심플한 방법으로 아래와 같이 WorksheetFunction
을 활용해 WorkDay
함수를 이용하는 것입니다.
Application.WorksheetFunction.WorkDay("2024-09-05", 3)
심플하죠? 다만 저렇게만 하면 우리가 생각하는 날짜 포맷이 아니기 때문에, 아래와 같이 Format
함수를 같이 써줘야할 필요가 있습니다.
Format(Application.WorksheetFunction.WorkDay("2024-09-05", 3), "yyyy-mm-dd")
새로운 함수 만들기
그런데 항상 저런식으로 쓰기에는 뭔가 코드가 너무 길어지고 보기 싫어지니까, 새로운 VBA 사용자 정의 함수를 만드는 것도 괜찮을 것 같습니다.
일단 엑셀 VBA 창을 열어서 모듈을 하나 추가해주고, 그 모듈에 공용 함수를 만들어 줍니다.
Public Function WorkDay2(StartDate As Date, Days As Integer)
WorkDay2 = Application.WorksheetFunction.WorkDay(StartDate, Days)
End Function
헷갈리지 않게 WorkDay2
라는 함수를 공용 함수(Public Function)를 만들고 이 함수 자체에서 WorksheetFunction
을 이용하게 만드는 것이죠. 필요할 때 마다 계속 WorksheetFunction
을 적는 것 보다 훨씬 깔끔하겠죠?
그런데 이렇게 만든 함수로 반환된 값을 보니,
네.. 인간에게 익숙하지 않은 포맷으로 출력되네요. Format
까지 WorkDay2
함수에 추가 해줄께요.
Public Function WorkDay2(StartDate As Date, Days As Integer)
WorkDay2 = Format(Application.WorksheetFunction.WorkDay(StartDate, Days), "yyyy-mm-dd")
End Function
이제 결과물을 볼까요?
이제 좀 편안하네요.
위에서 소개한 두 가지 방법 중 본인에게 더 편한 방법을 선택해 사용하면 될 것 같습니다.
그리고 비슷한 유형의 문제들도 마찬가지 방법으로 해결할 수 있다는 점을 알고 계시면 좋을 것 같네요.
끝.
댓글 남기기