|
* 요 아래 버터젤님 질문(#124191) 관련 답변입니다.
사실 인터넷 탐색을 해 보면 DTPicker라는 프로그램들이 돌아다니기는 하는데, 우리 나라와 실정이 잘 안 맞는 부분(dd-mmm-yyyy 방식)이 있어서 그동안 제가 만들어 쓰던 방식들을 일반화하여 공개합니다.
첨부 파일에는 세 개의 사용자정의 폼과
하나의 모듈이 포함되어 있습니다.
각 사용자정의 폼은
날짜 또는 시각을 입력하는 방식이 조금씩 다르게 구현된 것입니다.
실제로는 세 가지 방식 중에서 필요한 것만 골라서 가져다 쓰시면 됩니다.
달력을 띄우는 frmCalendar 폼은 날짜만 입력 가능한데
만일 시각까지 입력하기를 원하면
나머지 두 개의 폼에서 원하는 방식의 컨트롤들을
복사해서 활용하시면 될 것입니다.
(물론 관련 코드들도 함께 복사해 와야 하고
컨트롤을 다른 폼에 복사하는 경우 이름은 다시 정의해 주어야 함)
그리고 모듈에는
각 사용자정의폼을 호출하는 코드가
함수 형식으로 정의되어 있습니다.
활용 방법은
Dim GetDate As Date
로 정의되었다고 할 때
GetDate = DTPicker 또는
GetDate = DTPicker(DefaultDate) 또는
DTPicker GetDate
등과 같이, 함수형 또는 프로시저 형으로 호출 가능하고
DefaultDate(초기값) 지정을 생략하면 시스템의 현재 시각을
DefaultDate로 사용합니다.
다른 방식 즉, DTPicker1 이나 CalendarPicker
의 경우도 사용법은 같습니다.
이런 종류의 프로그램 특히 달력을 구현하고자 할 때
컨트롤 배열이 된다면 참 좋겠지만
엑셀에 딸린 VBA의 경우 컨트롤배열을 지원하지 않기 때문에
프로그램에 노가다 코딩이 부득이합니다.
그나마 이 프로그램 코딩에 있어서는
나름대로 노가다를 줄이기 위한 시도들을 해 보았는데
일부는 성공하고, 일부는 실패했네요.
각각 워크시트와 모듈 안에 코드들을 살펴보고 참고하시기 바랍니다. |
|