입력장치 중 마우스는 Windows에게는 중요한 입력장치중 하나입니다.
특히 Windows뿐만 아니라 많은 응용 프로그램들이 마우스를 사용하여 작업 가능하지만 그러나 키보드
역시 무시할 수 없는 입력장치입니다. 특히 빠른 작업을 위한 최후의 보루는 키보드입니다.
날짜를 입력하는 경우
Calendar컨트롤을 사용한 프로그램을 종종 만나게 됩니다. 이것은 매우 직관적이어서 프로그램 사용이
즐겁기도 합니다. 그러나 그러한 컨트롤 대신 키보드를 사용하여 편리하게 날짜입력을 하는 것은 어떨까요?
편리하기만 하다면 마다할리 없겠죠.
아래의
Userform은 한 개의 Label컨트롤과 TextBox컨트롤로 구성되어 있습니다.
TextBox컨트롤에는 날짜가 입력될 것입니다. 이때 날짜를 변경하는
경우 방향키와 PageUp/PageDown키를 사용하여 날짜를 바꾸도록 하는 겁니다.
키 |
작 업 |
Up |
다음 일 |
Down |
이전 일 |
Left |
이전 월 |
Right |
다음 월 |
PageUp |
다음 년도 |
PageDown |
이전 년도 |
TextBox컨트롤의 이벤트 프로시져중에서 키보드와 관련된 것이 Sub
TextBox1_KeyDown(...), Sub TextBox1_KeyUp(...), Sub
TextBox1_KeyPress(...) 등등이 있습니다.
그 중에서
Sub TextBox1_KeyDown(...)를 이용합니다. 이 이벤트
프로시져의 매개변수에는 KeyCode As MSForms.ReturnInteger가 있습니다. 이것은
키보드의 키 코드값을 의미하며 사용자가 TextBox에서 입력한 키 값이기도 합니다.
Key |
keycode |
constants |
Up |
38 |
vbKeyUp |
Down |
40 |
vbKeyDown |
Left |
37 |
vbKeyLeft |
Right |
39 |
vbKeyRight |
PageUp |
33 |
vbKeyPageUp |
PageDown |
34 |
vbKeyPageDown |
위의
vb로 시작하는 KeyCod상수는 KeyCodeConstants 열거형 상수의 멤버입니다.
Private Sub TextBox1_KeyDown(ByVal
KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim DateChg
As Date
'// TextBox의
일자를 Date형식으로 변환하여 가져온다
DateChg =
CDate(TextBox1.Text)
Select Case
KeyCode
Case
KeyCodeConstants.vbKeyUp
'// TextBox의 일자에 1일을 더한다
DateChg = DateAdd("d", 1, DateChg)
Case
KeyCodeConstants.vbKeyDown
'// TextBox의 일자에 -1일을 더한다. 결국 빼는 셈이다
DateChg = DateAdd("d", -1, DateChg)
Case
KeyCodeConstants.vbKeyLeft
'// TextBox의 일자에 한달을 뺀다
DateChg = DateAdd("m", -1, DateChg)
Case
KeyCodeConstants.vbKeyRight
'// TextBox의 일자에 한달을 더한다
DateChg = DateAdd("m", 1, DateChg)
Case
KeyCodeConstants.vbKeyPageUp
'// TextBox의 일자에 일년을 더한다
DateChg = DateAdd("Yyyy", 1, DateChg)
Case
KeyCodeConstants.vbKeyPageDown
'// TextBox의 일자에 일년을 뺀다
DateChg = DateAdd("Yyyy", -1, DateChg)
End Select
'// 변경된 일자를
TextBox에 돌려준다.
TextBox1.Text
= Format(DateChg, "YYYY-MM-DD")
End Sub
|