모두의매뉴얼
🚀

[엑셀/VBA] WorkDay 함수를 VBA 에서 사용하는 방법

📈18


엑셀에서 다들 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

이제 결과물을 볼까요?

이제 좀 편안하네요.


위에서 소개한 두 가지 방법 중 본인에게 더 편한 방법을 선택해 사용하면 될 것 같습니다.

그리고 비슷한 유형의 문제들도 마찬가지 방법으로 해결할 수 있다는 점을 알고 계시면 좋을 것 같네요.

끝.

    댓글 남기기

© 모두의매뉴얼 2024
🗝️