VBA에는 날짜와 관련된
여러 가지 함수가 제공됩니다. 가장 잘 알려진 함수가
Date()일 것 같군요.
이것은 현재의 날짜를 알려주는 함수입니다. 엑셀의
워크시트 함수로 따지자면 Today()함수에
해당하는 역할을 합니다.
날짜외에 요일을 알려주는
함수로는 WeekDay()함수가 있습니다.
VBA도움말을 빌리자면 요일을 나타내는 정수를 포함한
Variant(Integer) 값을 반환합니다.
그리고 그 예까지 빌리면 다음과 같습니다.
Dim MyDate, MyWeekDay
MyDate = #February 12, 1969#
' 날짜를 지정합니다.
MyWeekDay = Weekday(MyDate) ' MyDate가
수요일을 나타내기 때문에 MyWeekDay가 4를 포함합니다 |
WeekDay()함수는
다음의 표와 같은 결과를 돌려줍니다.
상수 |
값 |
설명 |
vbSunday |
1 |
일요일 |
vbMonday |
2 |
월요일 |
vbTuesday |
3 |
화요일 |
vbWednesday |
4 |
수요일 |
vbThursday |
5 |
목요일 |
vbFriday |
6 |
금요일 |
vbSaturday |
7 |
토요일 |
그리고 위의 표는 한 주의
시작을 ‘일요일’로 하는 경우입니다. 물론 대개는 그러겠지만.
그러나 WeekDay가
돌려주는 값이 정수값이기 때문에 따로 영문이나 한글로 표시하려면 If문이나
Select Case문과 같은 조건문을 다음처럼 사용하기도 합니다.
Select Case
Weekday(MyDate)
Case 1 : str=”일요일”
Case 2 : str=”월요일”
Case 3 : str=”화요일”
Case 4 : str=”수요일”
Case 5 : str=”목요일”
Case 6 : str=”금요일”
Case 7 : str=”토요일”
End Select
MsgBox str
그러나 이런 방법보다 더
간단한 방법이 있습니다. 워크시트함수중 Text()함수를 사용하면 됩니다. 이 함수는
값을 지정한 표시 형식의 텍스트로 변환합니다. 가령 B2셀에 2800이 입력되어 있고 TEXT(B2,
"\0.00")라고 하면 ‘\2800.00’으로 표시됩니다. 즉 서식을 지정하는 거죠.
요일을 표시하는 경우
Text()함수를 이용하면 다음과 같이 간단히 줄여서 표시할 수 있습니다.
Application.WorksheetFunction.Text(Date(),"ddd") |
위의 코딩은 Date()함수를 사용하여 현재 날짜를 구해
Text()함수에 넣어주고 표시형식을 "ddd"로 지정함으로써 Sun,Mon,Tue,Thu,..등등과
같이 영문 요일을 돌려줍니다.
약어가 아닌 전체요일이름을 사용하려면 표시형식문자열에 ‘d’를 하나
더 추가해 "dddd"라고 하면 Sunday,Monday,...와 같이 요일의 전체이름을 돌려주게
됩니다. |