엑셀 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. 주의 사항
- OnKey는 엑셀을 닫으면 초기화됨
- → Workbook_Open 이벤트에 추가하면 자동 설정 가능
- 다른 단축키와 충돌할 가능성
- → 엑셀 기본 단축키(Ctrl + C, Ctrl + V 등)를 덮어쓰지 않도록 주의
- 해제하는 코드도 함께 작성할 것
- → 사용 후 단축키를 원래 상태로 돌리는 코드 추가 권장
📝 정리
- Application.OnKey "단축키", "매크로" → 특정 키를 눌렀을 때 매크로 실행
- {F1}, {ENTER}, {DELETE} 등 키 입력 가능
- ^ = Ctrl, + = Shift, % = Alt 조합 가능
- ^a → Ctrl + A
- ^+s → Ctrl + Shift + S
- Application.OnKey "단축키", "" → 단축키 해제
- Workbook_Open에 추가하면 엑셀 시작 시 자동 적용 가능
🔥 OnKey를 활용하면 엑셀을 키보드 단축키로 더욱 효율적으로 제어할 수 있습니다! 🚀