나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 조삿갓 (choga21)

추천:  2
파일:     DTPicker.xlsm (46.7KB) 조회:  3672
제목:   [Tip] VBA 날짜 시간 입력도구 설계 및 컨트롤배열 흉내내기
     
  * 요 아래 버터젤님 질문(#124191) 관련 답변입니다.

사실 인터넷 탐색을 해 보면 DTPicker라는 프로그램들이 돌아다니기는 하는데, 우리 나라와 실정이 잘 안 맞는 부분(dd-mmm-yyyy 방식)이 있어서 그동안 제가 만들어 쓰던 방식들을 일반화하여 공개합니다.

첨부 파일에는 세 개의 사용자정의 폼과
하나의 모듈이 포함되어 있습니다.

각 사용자정의 폼은
날짜 또는 시각을 입력하는 방식이 조금씩 다르게 구현된 것입니다.

실제로는 세 가지 방식 중에서 필요한 것만 골라서 가져다 쓰시면 됩니다.

달력을 띄우는 frmCalendar 폼은 날짜만 입력 가능한데
만일 시각까지 입력하기를 원하면
나머지 두 개의 폼에서 원하는 방식의 컨트롤들을
복사해서 활용하시면 될 것입니다.
(물론 관련 코드들도 함께 복사해 와야 하고
컨트롤을 다른 폼에 복사하는 경우 이름은 다시 정의해 주어야 함)

그리고 모듈에는
각 사용자정의폼을 호출하는 코드가
함수 형식으로 정의되어 있습니다.

활용 방법은

Dim GetDate As Date
로 정의되었다고 할 때

GetDate = DTPicker 또는
GetDate = DTPicker(DefaultDate) 또는
DTPicker GetDate
등과 같이, 함수형 또는 프로시저 형으로 호출 가능하고
DefaultDate(초기값) 지정을 생략하면 시스템의 현재 시각을
DefaultDate로 사용합니다.

다른 방식 즉, DTPicker1 이나 CalendarPicker
의 경우도 사용법은 같습니다.

이런 종류의 프로그램 특히 달력을 구현하고자 할 때
컨트롤 배열이 된다면 참 좋겠지만
엑셀에 딸린 VBA의 경우 컨트롤배열을 지원하지 않기 때문에
프로그램에 노가다 코딩이 부득이합니다.

그나마 이 프로그램 코딩에 있어서는
나름대로 노가다를 줄이기 위한 시도들을 해 보았는데
일부는 성공하고, 일부는 실패했네요.

각각 워크시트와 모듈 안에 코드들을 살펴보고 참고하시기 바랍니다.
 
[불량 게시물 신고]  
        
  

작성일 : 2018-05-23(17:03)
최종수정일 : 2018-05-23(17:09)