Application 개체

OnKey 메서드

노만e 2025. 3. 14. 04:36

엑셀 VBA에서 Application.OnKey 메서드특정 키를 눌렀을 때 실행할 매크로를 지정하는 기능을 제공합니다.

즉, 키보드 단축키를 설정하여 특정 VBA 코드를 실행할 수 있도록 하는 기능입니다.

1. 기본 문법

Application.OnKey "단축키", "매크로이름"
  • "단축키": 실행할 키 또는 조합 (예: {F1}, "^a" (Ctrl + A))
  • "매크로이름": 실행할 매크로 이름 (문자열)

2. 기본 예제

📌 F2 키를 눌렀을 때 특정 매크로 실행

Sub 단축키_설정()
Application.OnKey "{F2}", "HelloWorld" ' F2 키를 누르면 HelloWorld 실행
End Sub
Sub HelloWorld()
MsgBox "F2 키가 눌렸습니다!"
End Sub

3. 특정 키에 매크로 지정

✅ 기본 키 지정

설정 값 예시
Enter
{ENTER}
Backspace
{BACKSPACE}
Delete
{DELETE}
Tab
{TAB}
Space
" " (공백)
Escape
{ESC}
방향키
{UP}, {DOWN}, {LEFT}, {RIGHT}
기능키
{F1}, {F2}, ..., {F12}

📌 예제: Enter 키를 누르면 특정 매크로 실행

Sub Enter_키_설정()
Application.OnKey "{ENTER}", "EnterFunction"
End Sub
Sub EnterFunction()
MsgBox "Enter 키가 눌렸습니다!"
End Sub

4. 조합 키 사용

OnKey를 사용하면 Ctrl, Shift, Alt와 조합하여 단축키를 만들 수 있습니다.

키 조합
설정 값 예시
Ctrl + A
^a
Ctrl + Shift + A
^+a
Alt + A
%a
Alt + Shift + A
%+a

📌 예제: Ctrl + A를 누르면 매크로 실행

Sub CtrlA_설정()
Application.OnKey "^a", "CtrlAFunction"
End Sub
Sub CtrlAFunction()
MsgBox "Ctrl + A가 눌렸습니다!"
End Sub

📌 예제: Ctrl + Shift + S를 누르면 매크로 실행

Sub CtrlShiftS_설정()
Application.OnKey "^+s", "CtrlShiftSFunction"
End Sub
Sub CtrlShiftSFunction()
MsgBox "Ctrl + Shift + S가 눌렸습니다!"
End Sub

5. 단축키 해제

특정 키에 할당된 매크로를 제거하려면 "매크로이름" 대신 ""(빈 문자열)를 사용하면 됩니다.

📌 예제: F2 키 기능 해제

Sub 단축키_해제()
Application.OnKey "{F2}", "" ' F2 키 기능 해제
End Sub

📌 예제: Ctrl + A 기능 해제

Sub CtrlA_해제()
Application.OnKey "^a", "" ' Ctrl + A 기능 해제
End Sub

6. 엑셀을 닫아도 단축키 유지하기

엑셀이 다시 실행될 때마다 OnKey 설정이 초기화됩니다.

이를 방지하려면 워크북이 열릴 때 자동 실행되도록 설정해야 합니다.

📌 예제: 워크북 열릴 때 자동으로 OnKey 설정

Private Sub Workbook_Open()
Application.OnKey "^a", "CtrlAFunction" ' 엑셀 열릴 때 Ctrl + A 설정
End Sub

📌 위 코드를 ThisWorkbook 모듈에 추가하면, 엑셀이 열릴 때 자동으로 단축키가 등록됩니다.


7. 활용 예제

📌 OnKey를 사용한 데이터 입력 자동화

Sub CtrlD_설정()
Application.OnKey "^d", "자동입력"
End Sub
Sub 자동입력()
ActiveCell.Value = "자동 입력되었습니다!"
End Sub

📌 Ctrl + D를 누르면 현재 선택된 셀에 자동으로 값을 입력합니다.


8. 주의 사항

  1. OnKey는 엑셀을 닫으면 초기화됨
  2. → Workbook_Open 이벤트에 추가하면 자동 설정 가능
  3. 다른 단축키와 충돌할 가능성
  4. → 엑셀 기본 단축키(Ctrl + C, Ctrl + V 등)를 덮어쓰지 않도록 주의
  5. 해제하는 코드도 함께 작성할 것
  6. → 사용 후 단축키를 원래 상태로 돌리는 코드 추가 권장

📝 정리

  1. Application.OnKey "단축키", "매크로" → 특정 키를 눌렀을 때 매크로 실행
  2. {F1}, {ENTER}, {DELETE} 등 키 입력 가능
  3. ^ = Ctrl, + = Shift, % = Alt 조합 가능
  • ^a → Ctrl + A
  • ^+s → Ctrl + Shift + S
  1. Application.OnKey "단축키", "" → 단축키 해제
  2. Workbook_Open에 추가하면 엑셀 시작 시 자동 적용 가능

🔥 OnKey를 활용하면 엑셀을 키보드 단축키로 더욱 효율적으로 제어할 수 있습니다! 🚀