- 최초 작성일: 2002-02-26
- 최종 수정일: 2026-09-30
- 조회수: 13 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: OnKey 메서드에 대하여
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
현재 Exceller의 강좌는 아래의 두 곳을 통해 제공되고 있습니다. http://www.iExceller.com 과 http://my.netian.com/~exceller
앞으로는 http://www.iExceller.com 사이트를 통해서만 강좌 파일을 올려야 할 것 같습니다. 네띠앙 측에서 서비스 기준을 변경하여 일정 용량을 초과하는 홈페이지에 대해서는 유료로 전환한다는 통보를 해 왔습니다.
따라서 미러 사이트와 통합이 필요한 시점이라 생각되어 두 사이트를 합치게 되었으므로 네띠앙 서버를 통해 접속을 해오시던 분들은 이용에 착오 없으시기를 바랍니다. 홈 정문 우측에 있는 '시작페이지로' 또는 '즐겨찾기에 추가' 아이콘을 클릭하시면 자동으로 여러분의 북마크가 Update 됩니다.
OnKey 메서드에 대하여
핵심 요약: OnKey로 단축키 만들기
Application.OnKey 메서드에 키 코드와 실행할 프로시저명을 지정하면 나만의 단축키를 만들 수 있고, 프로시저명을 생략하면 원래 상태로 복원됩니다.
- 1단계: OnKey "{PgDn}", "PageDown"처럼 키와 프로시저를 연결합니다.
- 2단계: Shift(+), Ctrl(^), Alt(%) 기호로 조합 키를 지정할 수 있습니다.
- 3단계: OnKey "{PgDn}"처럼 두 번째 인수를 생략하여 원래대로 되돌립니다.
Step 1: 엑셀은 Big Brother?
엑셀은 George Orwell의 [1984년]에 나오는 Big Brother 입니다. 무슨 얘기냐고요? 당연히 궁금하실 것입니다. ^^
너무도 당연한 얘기지만, 엑셀은 사용자가 어떤 작업을 하고 있는지 항상 감시(?)합니다. 어떤 메뉴를 눌렀는 지, 어떤 오브젝트를 삽입하였는 지는 물론 어떤 데이터를 셀에 입력하고 있는 지 항상 모니터링 합니다.
이러한 특성을 응용하면 특정 키나 키 조합을 눌렀을 경우 특정 프로시저가 실행되도록 할 수 있습니다. 이 경우 사용되는 것이 Application 오브젝트의 OnKey 메서드 입니다.
Step 2: OnKey 메서드로 단축키 바꾸기
아래의 버튼을 클릭하신 다음, PageUp 키와 PageDown 키를 번갈아가며 눌러 보세요.
어떤 일이 생깁니까? PageUp 키나 PageDown 키를 누를 때마다 페이지 단위로 화면이 이동하는 것이 아니라 다섯 간씩 셀 포인터가 이동하지요?
이처럼 OnKey 메서드를 이용하면 자신만의 단축키를 만들거나 기존에 설정되어 있는 단축키를 무력화 시킬 수도 있는 것입니다. 코드를 볼까요?
Sub SetupOnKey()
Application.OnKey "{PgDn}", "PageDown"
Application.OnKey "{PgUp}", "PageUp"
'''PgUp은 입력되는 키(또는 키 조합)를 의미하고 PageUp은 해당 키 또는 키 조합을 눌렀을 때
'''실행할 프로시저 명을 의미합니다. 키를 지정할 때 사용할 수 있는 키 및 코드는 아래와 같습니다.
'''Ctrl, Shift, Alt 등과 같은 특수 키와 조합하여 사용할 수도 있습니다.
End Sub
PgUp은 입력되는 키(또는 키 조합)를 의미하고 PageUp은 해당 키 또는 키 조합을 눌렀을 때 실행할 프로시저명을 의미합니다. 키를 지정할 때 사용할 수 있는 키 및 코드는 아래와 같습니다.
| 키 | 코드 |
|---|---|
| 백스페이스 | {BS} |
| 아래쪽 화살표 | {DOWN} |
| 오른쪽 화살표 | {RIGHT} |
| 왼쪽 화살표 | {LEFT} |
| 위쪽 화살표 | {UP} |
| Break | {BREAK} |
| Caps Lock | {CAPSLOCK} |
| Clear | {CLEAR} |
| Delete | {DEL} |
| End | {END} |
| Enter | ~ |
| Enter(숫자 키패드) | {ENTER} |
| Esc | {ESC} |
| F1~F15 | {F1}~{F15} |
| Help | {HELP} |
| Home | {HOME} |
| Insert | {INSERT} |
| Num Lock | {NUMLOCK} |
| Page Down | {PGDN} |
| Page Up | {PGUP} |
| Return | {RETURN} |
| Scroll Lock | {SCROLLLOCK} |
| Tab | {TAB} |
Ctrl, Shift, Alt 등과 같은 특수 키와 조합하여 사용할 수도 있습니다.
| 키 | 코드 |
|---|---|
| Shift | + |
| Ctrl | ^ |
| Alt | % |
예제에서 PageDown, PageUp 프로시저는 각각 셀 포인터를 다섯 칸 아래, 다섯 칸 위로 이동시키는 프로시저입니다.
Sub PageDown()
On Error Resume Next
ActiveCell.Offset(5, 0).Select
End Sub
Sub PageUp()
On Error Resume Next
ActiveCell.Offset(-5, 0).Select
End Sub
Step 3: 원상복귀시키기
이제 다시 원상복귀를 시켜 보도록 하지요. 아래의 버튼을 누르신 다음 PageUp 키나 PageDown 키를 눌러 보세요.
Sub CancelOnkey()
Application.OnKey "{PgDn}"
Application.OnKey "{PgUp}"
'''즉 OnKey 메서드의 첫번째 인수(즉 키 또는 키 조합)만 전달하고 두번째 인수값은 생략하면
'''원래 상태로 돌아가는 것입니다.
End Sub
즉 OnKey 메서드의 첫번째 인수(즉 키 또는 키 조합)만 전달하고 두번째 인수값은 생략하면 원래 상태로 돌아가는 것입니다.
자신이 자주 사용하는 단축키를 프로시저에 연결해 두고 사용하면 편리하겠지요? 많이 응용해 보시기 바랍니다.
오늘은 여기까지…
정리 — OnKey 메서드 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 단축키 설정 | Application.OnKey "{PgDn}", "PageDown" | 키에 프로시저 연결 |
| 조합 키 | + (Shift), ^ (Ctrl), % (Alt) | 특수 키와 조합 |
| Enter 키 | ~ 또는 {ENTER} | 큰 Enter 키와 숫자 키패드 구분 |
| 원상복귀 | Application.OnKey "{PgDn}" | 두 번째 인수 생략 |
| 용도 | 나만의 단축키 / 기존 단축키 무력화 | 업무 편의성 향상 |
자주 묻는 질문 (FAQ)
Q1. OnKey 메서드는 무엇을 하나요?
특정 키나 키 조합을 눌렀을 때 지정한 프로시저가 실행되도록 연결해 주는 Application 오브젝트의 메서드입니다.
Q2. Ctrl이나 Shift와 조합하려면 어떻게 하나요?
Shift는 +, Ctrl은 ^, Alt는 % 기호를 키 코드 앞에 붙입니다.
Q3. 바꾼 단축키를 원래대로 되돌리려면?
OnKey 메서드의 첫 번째 인수(키)만 전달하고 두 번째 인수를 생략하면 원래 동작으로 돌아갑니다.
마치며
자신이 자주 사용하는 단축키를 프로시저에 연결해 두면 작업이 훨씬 편리해집니다.