반응형
사용자 정의 폼을 사용하다보면 KeyDown 이벤트를 이용할 때가 있다. 특정 키를 눌렀을 때 작업을 수행 할 수 있도록 할 수 있는 이벤트이다.
TextBox1을 생성하고 KeyDown 이벤트를 눌러보면 다음과 같이 나타난다.
1
2
3
|
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
End Sub
|
cs |
KeyCode와 Shift 파라미터는 다음과 같은 의미를 가진다.
KeyCode: 내가 누른 키의 번호
Shift: Shift키를 눌렀는지 확인 (0이면 안누름, 1이면 누름)
특이한 점
- 좌측 Ctrl를 누르면 Shift 값: 2, KeyCode:17 으로 인식
- 좌측 Alt를 누르면 Shift 값: 4, KeyCode: 18 으로 인식
- 한자, 한/영, 우측 Alt, 우측 Ctrl Key는 KeyCode가 229로 값이 동일(Shift 값 0)
KeyDown 이벤트에서 키를 누를때 나타나는 KeyCode 값은 위 그림에서 확인 할 수 있다. 이것으로 할 수 있는 기능이라면 TextBox에서 사용자 입력값을 받을 때 특정 글자나 숫자만 나타낼 수 있게 제한할 수 있다.
- 입력 제한 기능 넣어보기
1
2
3
4
5
6
7
|
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Label3.Caption = KeyCode
If KeyCode = 47 And KeyCode = 58 Then
Else
KeyCode = 0
End If
End Sub
|
cs |
메인 자판의 숫자키 범위에서만 입력이 가능하도록 코드를 구성해봤다. 범위 밖의 키가 입력되면 KeyCode를 0으로 초기화하고 프로시져를 종료하면 아무일도 일어나지 않게된다.
특정 범위 또는 키를 사용제한하고 싶다면 KeyCode 이벤트를 이용해서 입력값 제한하는 것도 좋은 방법 중 하나인 듯하다.
반응형
'컴퓨터 공부 > 엑셀 & VBA' 카테고리의 다른 글
[엑셀vba] 사용자 정의 폼 - Label, TextBox 텍스트의 세로 정렬을 가운데로 해보자! (0) | 2021.08.28 |
---|---|
[엑셀vba] 함수나 프로시저에 선택적 인수를 받게 해보자. (0) | 2021.08.26 |
[엑셀vba] AccessDB 테이블에 엑셀 파일로 한 번에 대량 데이터 입력하기 (0) | 2021.08.16 |
[엑셀vba] 파일을 삭제해보즈아!(kill) (3) | 2021.07.27 |
[엑셀vba] 파일을 복사해보자!(filecopy) (0) | 2021.07.27 |