엑셀 VBA에서 SendKeys 메서드는 키보드 입력을 자동으로 실행하는 기능을 제공합니다.
즉, 사용자가 키보드를 눌러야 하는 작업을 VBA 코드로 자동화할 때 사용됩니다.
1. 기본 문법
Application.SendKeys "키입력"
|
매개변수
|
설명
|
"키입력"
|
키보드에서 입력할 키 또는 조합
|
Wait (옵션)
|
True이면 키 입력이 완료될 때까지 기다림, False이면 즉시 실행 후 다음 코드 진행
|
📌 엑셀 창에서 활성화된 상태에서만 동작함
📌 단축키를 자동화할 수 있지만, 키 입력이 정확하지 않을 수 있음
2. 기본 사용법 (Enter 키 입력)
Sub 엔터키_입력()
Application.SendKeys "~"
End Sub
|
📌 현재 활성화된 창에서 Enter(~) 키를 자동 입력
3. Ctrl + S (저장) 입력
Sub 단축키_저장()
Application.SendKeys "^s"
End Sub
|
📌 Ctrl + S를 눌러 현재 파일을 저장
4. 다이얼로그에서 Enter 입력
Sub 메시지박스_확인클릭()
MsgBox "확인을 눌러야 다음 단계 진행"
Application.SendKeys "~", True
End Sub
|
📌 메시지 박스를 표시한 후 자동으로 Enter 키를 눌러 닫음
5. 엑셀을 닫을 때 Ctrl + W 입력
Sub 엑셀닫기()
Application.SendKeys "^w"
End Sub
|
📌 Ctrl + W를 사용하여 현재 엑셀 창을 닫음
6. Alt 키를 이용한 메뉴 실행 (Alt + F4 → 창 닫기)
Sub 창닫기_AltF4()
Application.SendKeys "%{F4}"
End Sub
|
📌 Alt + F4 키 조합을 사용하여 현재 창을 닫음
7. 복사(Ctrl + C) & 붙여넣기(Ctrl + V), 실행 취소(Ctrl + Z)
Sub 복사_붙여넣기_실행취소()
Application.SendKeys "^c", True ' Ctrl + C (복사)
Application.SendKeys "^v", True ' Ctrl + V (붙여넣기)
Application.SendKeys "^z", True ' Ctrl + Z (실행 취소)
End Sub
|
📌 복사, 붙여넣기, 실행 취소를 자동 실행
8. 자동으로 F2 (편집 모드) 후 Enter
Sub 편집모드_확정()
Application.SendKeys "{F2}" ' F2 (편집 모드)
Application.SendKeys "~" ' Enter (확정)
End Sub
|
📌 현재 선택된 셀을 F2로 편집하고, Enter로 확정
9. 워크시트에서 Ctrl + A 입력 (전체 선택)
Sub 전체선택()
Application.SendKeys "^a"
End Sub
|
📌 Ctrl + A를 사용하여 전체 선택
10. Alt + Tab으로 창 전환
Sub 창전환()
Application.SendKeys "%{TAB}"
End Sub
|
📌 Alt + Tab을 사용하여 창 전환
11. 특정 창을 활성화하고 SendKeys 실행
Sub 특정창_활성화_후_입력()
AppActivate "메모장"
Application.SendKeys "^v"
End Sub
|
📌 "메모장" 창을 활성화한 후 Ctrl + V (붙여넣기) 실행
12. 탭 이동 (Tab, Shift + Tab)
Sub 탭이동()
Application.SendKeys "{TAB}" ' 다음 필드로 이동
Application.SendKeys "+{TAB}" ' 이전 필드로 이동
End Sub
|
📌 Tab 키로 다음 필드 이동, Shift + Tab으로 이전 필드 이동
13. 셀 탐색 (화살표 키)
Sub 셀탐색_화살표()
Application.SendKeys "{RIGHT}" ' 오른쪽 이동
Application.SendKeys "{DOWN}" ' 아래로 이동
End Sub
|
📌 오른쪽(→), 아래쪽(↓)으로 이동
14. 숫자 입력 후 Enter 키 입력
Sub 숫자입력_확정()
ActiveCell.Value = 100
Application.SendKeys "~"
End Sub
|
📌 현재 선택된 셀에 100을 입력한 후 Enter 키 입력
15. 함수 입력 후 Ctrl + Shift + Enter 실행 (배열 수식 입력)
Sub 배열수식_입력()
ActiveCell.Formula = "=SUM(A1:A10)"
Application.SendKeys "^+~"
End Sub
|
📌 배열 수식을 입력한 후 Ctrl + Shift + Enter로 확정
❌ SendKeys 사용 시 주의할 점
- 비효율적일 수 있음 → SendKeys는 키보드 입력을 흉내 내므로 불안정할 수 있음.
- 예상치 못한 동작 발생 가능 → 실행 중 다른 창이 활성화되면 키 입력이 엉뚱한 곳에 입력될 수 있음.
- 대체 방법 고려 → VBA의 기본 메서드(Range.Formula, Workbook.Save, Application.Dialogs)를 사용하면 더 안정적.
📝 정리
기능
|
VBA 코드
|
엔터 키 입력
|
Application.SendKeys "~"
|
Ctrl + S (저장)
|
Application.SendKeys "^s"
|
메시지 박스 확인 클릭
|
Application.SendKeys "~", True
|
엑셀 닫기 (Ctrl + W)
|
Application.SendKeys "^w"
|
Alt + F4 (창 닫기)
|
Application.SendKeys "%{F4}"
|
복사 (Ctrl + C)
|
Application.SendKeys "^c"
|
붙여넣기 (Ctrl + V)
|
Application.SendKeys "^v"
|
실행 취소 (Ctrl + Z)
|
Application.SendKeys "^z"
|
편집 모드 (F2) 후 엔터
|
Application.SendKeys "{F2}": Application.SendKeys "~"
|
전체 선택 (Ctrl + A)
|
Application.SendKeys "^a"
|
창 전환 (Alt + Tab)
|
Application.SendKeys "%{TAB}"
|
탭 이동 (Tab, Shift + Tab)
|
Application.SendKeys "{TAB}": Application.SendKeys "+{TAB}"
|
화살표 이동 (→, ↓)
|
Application.SendKeys "{RIGHT}": Application.SendKeys "{DOWN}"
|
숫자 입력 후 엔터
|
ActiveCell.Value = 100: Application.SendKeys "~"
|
배열 수식 입력 (Ctrl + Shift + Enter)
|
Application.SendKeys "^+~"
|
🔥 SendKeys는 단축키 입력 자동화를 위한 기능이지만, 더 안정적인 VBA 메서드를 활용하는 것이 좋습니다! 🚀