컴퓨터 공부/엑셀 & VBA

[엑셀vba] 사용자 정의 폼에서 키 입력 받고 이벤트 실행하기

도 박사 2020. 9. 8. 15:01
반응형

사용자 정의 폼에서 키보드 입력을 받고 이벤트를 실행해보자!

 


1. 키 입력받는 코드

 

키 입력 대기 중
a 입력

 

b 입력

 

입력받은 키 값을 표시할 용도로 레이블 하나를 생성하고 

 

키를 입력했을 때 폼 화면에 나타나도록 만들어봤다.

 

키 입력이 있을 때만 표시하고 입력이 없으면 표시되지 않는다.

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Dim Key As String
    Key = Chr(KeyAscii)
    Label1.Caption = Key
    
End Sub

UserForm에 있는 KeyPress

 

사용자 정의 폼에서 아무 키를 누르면 아스키코드의 10진수로 UserForm_KeyPress에 전달된다.

 

ex) A = 65, a = 97

소문자 a 입력했을 때

 

전달받은 숫자를 문자로 변환

 

소문자 a를 입력하면 여기에 해당하는 아스키코드값인 97이 전달되고

 

chr 함수를 이용해 문자로 바꿔주는 작업을 진행했다.

 

위에 나온 코드만 사용 할 경우 a를 눌렀다 떼도 a가 그대로 화면에 나타난다.

 

키 입력이 중지됬을 때 화면에 아무 표시 안 나게 하는 건 아래 코드를 참고하면 된다.


2. 키 입력 없을 때 화면 비우기

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    
    Label1.Caption = ""
    
End Sub

UserForm에 있는 KeyUp

 

KeyUp은 키를 뗐을때 발생하는 이벤트이다..

 

어떤 키를 눌렀다 떼더라도 레이블의 캡션은 아무것도 없도록 바뀐다.


 

 

반응형