- 최초 작성일: 2007-12-11
- 최종 수정일: 2026-09-30
- 조회수: 26 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 선택한 영역만 표시하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
시트에 암호거는 단축 키는 없느냐는 질문을 주신 분이 계시더군요.
시트에 암호를 거는 매크로를 '매크로 기록기'를 이용하여 작성한 다음, '개발 도구' 탭의 '매크로' 아이콘을 클릭합니다. '매크로' 대화상자가 나타나면 '옵션' 버튼을 클릭하고 '바로 가기 키'를 지정해 주면 단축 키로 시트 암호를 걸 수 있게 됩니다.
선택한 영역만 표시하기
핵심 요약: 선택 영역 밖의 행과 열을 한 번에 숨기고 되살리기
영역을 선택하고 단축 키를 누르면 선택한 영역만 남고 나머지 행과 열이 숨겨집니다. 단축 키를 한 번 더 누르면 숨겨진 영역이 모두 다시 나타납니다.
- 1단계: 마지막 행이나 열이 숨겨져 있으면 이미 숨긴 상태로 보고 모두 표시합니다.
- 2단계: 선택 영역의 시작·끝 행과 열 위치를 변수에 저장합니다.
- 3단계: 영역 앞뒤의 행과 열을 EntireRow/EntireColumn의 Hidden 속성으로 숨깁니다.
Step 1: 선택한 영역만 남기고 나머지 숨기기
이번 시간에는 사용자가 범위를 지정하고 <Ctrl+Shift+H> 키를 누르면, 선택한 영역만 남겨두고 나머지는 모두 숨기는 방법에 대해 살펴보도록 하겠습니다(단축키를 한번 더 누르면 숨겨졌던 영역은 다시 나타납니다).
Sub HideRestArea()
Dim lngRowStart As Long
Dim lngRowEnd As Long
Dim lngColStart As Long
Dim lngColEnd As Long
On Error GoTo ET
If Rows(Rows.Count).EntireRow.Hidden Or Columns(Columns.Count).EntireColumn.Hidden Then
'특정한 영역이 이미 숨겨져 있는 경우, 이 영역을 표시하기 위한 과정입니다.
'맨 마지막 행이나 열이 숨겨져 있을 경우 EntireRow나 EntireColumn 속성의 Hidden 속성을
'False, 즉 화면에 표시합니다.
Cells.EntireRow.Hidden = False
Cells.EntireColumn.Hidden = False
MsgBox "숨겨져 있던 영역을 모두 표시하였습니다", , "www.iExceller.com"
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행부터 선택된 영역이 시작되기 이전까지 행, 선택된 영역 바로 다음 행부터 맨 아래쪽 행까지
'영역을 Hidden 속성을 이용하여 숨깁니다.
If lngRowStart > 1 Then Range(Cells(1, 1), Cells(lngRowStart - 1, 1)).EntireRow.Hidden = True
If lngRowEnd < Rows.Count Then Range(Cells(lngRowEnd + 1, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True
'1열부터 선택된 영역이 시작되기 이전까지 열, 선택된 영역 바로 다음 열부터 맨 오른쪽 열까지
'영역을 Hidden 속성을 이용하여 숨깁니다.
If lngColStart > 1 Then Range(Cells(1, 1), Cells(1, lngColStart - 1)).EntireColumn.Hidden = True
If lngColEnd < Columns.Count Then 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
원문 코드 보완: 선택한 영역이 1행이나 A열에서 시작하면 Cells(lngRowStart - 1, 1)처럼 0번째 행·열을 참조하게 되어 오류가 발생합니다. 마찬가지로 마지막 행·열까지 선택한 경우에도 범위를 벗어납니다. 그래서 숨길 영역이 실제로 존재할 때만 실행하도록 If 조건을 추가했습니다.
Step 2: 단축 키 지정과 저장 위치
이렇게 해서 작성된 프로시저에 단축 키를 지정하는 방법은 강좌 도입부에 소개해 드린 내용을 참고하시면 되겠습니다. 오늘 소개해 드린 내용을 빈번하게 사용하실 예정이라면 '개인용 매크로 통합문서(Personal.xls)'에 저장해 두시면 되겠습니다.
참고로 '개인용 매크로 통합문서'는 엑셀 2007 버전에서는 Personal.xlsb로 확장자가 변경되었으니 참고하세요.
다음 시간에 또…
정리 — 선택 영역만 표시하기 코드 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 숨김 상태 판별 | Rows(Rows.Count).EntireRow.Hidden | 마지막 행/열이 숨겨져 있으면 이미 숨긴 상태로 판단 |
| 모두 표시 | Cells.EntireRow.Hidden = False | 숨겨진 행과 열을 전부 되살림 |
| 영역 위치 저장 | Selection.Rows(1).Row, Selection.Columns(1).Column | 선택 영역의 시작 행/열을 구함 |
| 영역 밖 숨기기 | Range(...).EntireRow.Hidden = True | 선택 영역의 위·아래, 좌·우를 숨김 |
| 단축 키 지정 | [매크로] 대화상자의 [옵션] | Ctrl+Shift+H 등의 바로 가기 키 지정 |
자주 묻는 질문 (FAQ)
Q1. 숨긴 영역을 다시 표시하려면 어떻게 하나요?
같은 단축 키를 한 번 더 누르면 됩니다. 코드가 마지막 행이나 열이 숨겨져 있는지 확인해서, 숨겨져 있으면 모든 행과 열을 표시하도록 만들어져 있습니다.
Q2. 이 매크로를 모든 통합 문서에서 쓰려면 어떻게 하나요?
개인용 매크로 통합 문서에 저장해 두면 어떤 문서에서든 사용할 수 있습니다. 엑셀 2007 이상에서는 개인용 매크로 통합 문서의 확장자가 Personal.xlsb입니다.
Q3. 단축 키가 다른 기능과 겹치면 어떻게 하나요?
매크로 대화상자의 옵션에서 다른 글자로 바꾸면 됩니다. 기본 단축 키와 겹치지 않도록 Ctrl+Shift 조합을 쓰는 것을 권장합니다.
마치며
선택한 영역의 시작과 끝 위치만 알면 나머지 영역을 숨기는 일은 간단합니다. 개인용 매크로 통합 문서에 저장해 단축 키로 자주 활용해 보세요!