- 최초 작성일: 2025-01-24
- 최종 수정일: 2026-09-27
- 조회수: 13 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: VBA 파워 코딩 248회 - 선택 영역 외 숨기기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
무라카미 하루키의 창조력
창조적인 작업에 대해 기계적인 반복을 한다는 걸 바보 취급하는 사람들이 많지만 그렇지 않아요. 반복성에는 확실히 주술적인 것이 있어요. 정글의 깊은 곳에서 들려오는 북소리의 울림 같은 것이지요.
무라카미 하루키는 마라톤으로도 유명합니다. 그는 "비가 오나 눈이 오나 매일 조깅을 하고, 국내에 있든 해외에 있든 매일 일정한 분량의 글을 쓰는 것을 자신의 창조력의 원천"이라고 밝힌 바 있습니다. 창조성은 '일탈'에서 나오는 것이 아니라 '일상'에서 나온다고 하죠. 매일 규칙적으로 자신이 좋아하는 것을 반복하는 것이 중요하며, 그러기 위해서는 즐기는 것이 중요하겠죠? 우리도 엑셀과 VBA를 즐겨보도록 하죠.
선택한 영역 바깥 쪽은 숨기는 Code
핵심 요약: 선택한 영역만 남기고 나머지 행과 열 숨기기
선택 영역의 시작·끝 행과 열 번호를 구해 그 바깥의 행과 열을 EntireRow.Hidden, EntireColumn.Hidden 속성으로 숨기고, 이미 숨겨져 있으면 전체를 다시 표시합니다. 매크로에 단축키를 지정하면 누를 때마다 숨기기와 표시가 번갈아 실행됩니다.
- 숨기기: 선택 영역 앞뒤의 행과 열을 Hidden = True
- 다시 표시: 마지막 행이나 열이 숨겨져 있으면 Hidden = False로 전체 표시
- 단축키 지정: 개발 도구 - 매크로 - 옵션 - 바로 가기 키 (예: Ctrl+Shift+H)
- 사용법: 범위 선택 후 단축키를 누를 때마다 사라졌다가 나타남
선택한 부분만 남기고 나머지 숨기기
범위를 지정하고 단축키를 누르면 선택한 부분만 남겨두고 나머지 영역은 모두 숨기는 코드를 작성해 보겠습니다. 단축키를 한 번 더 누르면 숨겨졌던 영역이 다시 나타납니다.
Step 1: 코드 작성
Visual Basic Editor 상태(<Alt> + <F11>)에서 모듈을 삽입하고 코드를 작성합니다. VBA 강좌를 보시는 분 중에 이게 무슨 말인지 모르는 분은 설마 없으리라 생각합니다. ^^;
Sub HideArea()
Dim lngRowStart As Long ' 남겨 둘 영역의 행 시작 위치
Dim lngRowEnd As Long ' 남겨 둘 영역의 행 끝 위치
Dim lngColStart As Long ' 남겨 둘 영역의 열 시작 위치
Dim lngColEnd As Long ' 남겨 둘 영역의 열 끝 위치
On Error GoTo ET ' 오류 발생 시 ET 레이블로 이동
' 특정한 영역이 이미 숨겨져 있는 경우, 이 영역을 표시해 주기 위한 부분임.
' 마지막 행이나 열이 숨겨져 있을 경우, EntireRow나 EntireColumn의
' Hidden 속성 값을 False로 설정하면 숨겨진 영역이 화면에 표시됨.
If Rows(Rows.Count).EntireRow.Hidden Or _
Columns(Columns.Count).EntireColumn.Hidden Then
Cells.EntireRow.Hidden = False
Cells.EntireColumn.Hidden = False
Exit Sub
End If
' 선택된 영역의 첫 번째 행 번호, 마지막 행 번호, 첫 번째 열 번호, 마지막 열 번호를
' 각각의 변수에 할당(저장)함.
lngRowStart = Selection.Rows(1).Row
lngRowEnd = lngRowStart + Selection.Rows.Count - 1
lngColStart = Selection.Columns(1).Column
lngColEnd = lngColStart + Selection.Columns.Count - 1
' 1행부터 선택된 영역이 시작되기 이전까지 행과
' 선택된 영역 바로 다음 행부터 맨 아래쪽 행까지의 영역을 숨김.
Range(Cells(1, 1), Cells(lngRowStart - 1, 1)).EntireRow.Hidden = True
Range(Cells(lngRowEnd + 1, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True
' 1열부터 선택된 영역이 시작되기 이전까지 열과
' 선택된 영역 바로 다음 열부터 맨 오른쪽 열까지의 영역을 숨김.
Range(Cells(1, 1), Cells(1, lngColStart - 1)).EntireColumn.Hidden = True
Range(Cells(1, lngColEnd + 1), Cells(1, Columns.Count)).EntireColumn.Hidden = True
ET: ' 오류 발생 시 이곳으로 와서 아래 구문을 실행함.
If Err <> 0 Then
MsgBox Err.Description, , "에러 코드: " & Err.Number
End If
End Sub
Step 2: 단축키 설정
(1) '개발 도구 - 매크로' 아이콘을 클릭합니다.
(2) '매크로' 대화상자에서 단축키를 설정할 매크로를 선택합니다. '옵션' 버튼을 클릭하고, '바로 가기 키'를 지정합니다. 여기서는 <Ctrl> + <Shift> + <H> 키로 설정합니다.
이제 워크시트로 가서 범위를 지정하고 <Ctrl> + <Shift> + <H> 키를 누를 때마다 선택된 범위 밖의 영역은 사라졌다가 나타났다가를 반복합니다.
참고: 이미지에 대하여
이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 당시 화면 구성을 재구성한 예시 이미지이며, 실제 엑셀 화면과 세부 디자인(버전별 UI)은 다를 수 있습니다. 이미지 속 선택 범위와 데이터는 예시입니다.
정리 — 선택 영역 바깥 숨기기 코드의 구성
| 단계 | 코드에서 하는 일 |
|---|---|
| 복원 판단 | 마지막 행이나 열이 숨겨져 있으면 전체 행과 열을 다시 표시하고 종료 |
| 영역 파악 | Selection에서 첫 행, 마지막 행, 첫 열, 마지막 열 번호를 변수에 저장 |
| 숨기기 | 선택 영역 앞뒤의 행과 열을 EntireRow.Hidden, EntireColumn.Hidden으로 숨김 |
| 단축키 | 개발 도구 - 매크로 - 옵션에서 바로 가기 키 지정 (예: Ctrl+Shift+H) |
자주 묻는 질문 (FAQ)
Q1. 선택한 영역만 남기고 나머지를 숨기려면 어떻게 하나요?
선택 영역의 첫 행, 마지막 행, 첫 열, 마지막 열 번호를 구한 다음, 그 바깥에 있는 행과 열을 EntireRow.Hidden = True, EntireColumn.Hidden = True로 숨기면 됩니다.
Q2. 숨겨진 영역을 다시 표시하려면 어떻게 하나요?
예제 코드는 마지막 행이나 열이 숨겨져 있으면 Cells.EntireRow.Hidden = False, Cells.EntireColumn.Hidden = False로 전체를 다시 표시합니다. 그래서 같은 단축키를 한 번 더 누르면 원래대로 돌아옵니다.
Q3. 매크로에 단축키를 지정하려면 어떻게 하나요?
'개발 도구 - 매크로'를 클릭하고 매크로를 선택한 다음 '옵션' 버튼에서 '바로 가기 키'를 지정합니다. 예제에서는 Ctrl+Shift+H로 지정했습니다.
마치며
범위를 선택하고 단축키만 누르면 보고 싶은 부분만 남길 수 있습니다. 매일 쓰는 도구일수록 이런 작은 자동화가 큰 차이를 만드니 꼭 해 보세요!
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 사이트 정문 왼쪽에 있는 'VBA 강좌 - VBA 입문강좌'를 읽어보시면 이해가 빠릅니다.