Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Control|Calendar|OLEObject|Calendar|SelectionChange|Shapes|
|AutoShapeType|Type|OLEObjects|Class Module|

날자의 입력을 편리하고 효율적으로 하고 싶다

날자를 입력하려면 자판을 두들겨야 하는데 번거롭고
또한 날자는 중요한 정보인데 잘못입력하면 얹찮은 일의 원인이 된다
간단하게 입력하는 방법이 없을까??

외부에서 지원하는 Calendar콘트롤이라고 하는것이 있다

그림과 같이 설치하면 된다
외부에서 지원하는 다양한 오브젝트들이 있다
Calendar오브젝트는 그 많은 것중의 하나인것이다



수식줄에 보면 =EMBED("MSCAL.Calendar.7","") 라는 수식이 보인다
외부라이브러리를 참조하는 수식인것이다
이것은 그대로 건들지 말고 놓아두고...


콘트롤도구상자의 다른 콘트롤과 마찬가지로 속성창에서
다양한 모양을 설정할수 있다
이것은 물론 프로그래밍적으로 접근하여 Run-Time에
바꿔 나갈수도 있을것이다



위와 같이 카렌다콘트롤을 그려 넣었을때
직접실행창에서

?ActiveSheet.Oleobjects.Count
값은 1이고
?ActiveSheet.Shapes.Count
도 역시 1이다
다시
?ActiveSheet.OleObjects(1).Name
이라고 하면 Calendar1 이라는 결과가 나오고
다시 같은 요령으로
?ActiveSheet.Shapes(1).Name
도 같은 값인 Calendar1 이라는 결과가 나온다
물론 활성화된 시트내에 도형은 아무것도 없고 오직 Calendar콘트롤만
그려져 있을때 1로 접근한것이다
다시
?ActiveSheet.Shapes(1).AutoShapeType
이라고 하면 결과는 앞페이지에서 설명하였던 -2가 나온다
다시
?ActiveSheet.Shapes(1).Type
이라고 하면 12가 결과값이다



초보님들은 도대체 이런 Type이니 AutoShapeType이니 뭐 그렇게 중요할까???
라고 의아해 할수 도 있다
그러나 프로그래밍의 모든 에러의 원인은 타입의 설정
타입을 읽거나 쓸때 잘못된 타입으로 시도할때 발생한다
타입에만 신경을 바짝 써도 에러의 발생을 팍 줄인다

아무튼 아래와 같은 그림이 되고 아무리 마우스로 건드려 보아도
아무 일도 일어나지 않는다..그냥 먹통이다
콘트롤에 지능을 심어야 한다



이벤트프로시져에 원하는 작업을 작성하면 그것이 바로 콘트롤의
지능이 심어지게 되는것이고..원하는 작업을 시킬수 있게 된다



아래의 화일에서는

  • 셀을 선택할때마다 유효한 셀을 확인하여 카렌다를 나타나게 한다(SelectionChange)
  • Run-Time에 Calendar오브젝트의 속성을 건드려서
  • 셀을 이동할때마다 모양(색상,폰트등)을 바꿔 보자
  • 셀을 선택할때마다 카렌다를 이동하고
  • 카렌다를 크릭할때 입력하고 싶은 셀에 날자를 입력한다
  • 아래의 그림과 같이 학습효과를 위한 자동화부분은 신경쓰지 않으셔도된다
  • 나중에 진도에 맞추어 다룰것이고..
  • WorkShop에서 크래스모듈에 심취하신분들은 신경써서 보시면 된다
  • 속성만 주면 작업이 되게한 사용자정의 오브젝트이다




Calendar Control